抱歉,我无法更好地表达这一点。但我遇到了一些如下代码:
MyObject.prototype = Object.create(MyObject.prototype);
MyObject.prototype.constructor = MyObject;
我似乎无法弄清楚它的作用。 MyObject 在其上方定义如下:
function MyObject(options) {
this.someProp = someDefault;
this.otherProp = process(options.something);
// etc...
}
并且它总是作为构造函数被调用。我只是想知道前两行有什么好处,以及它是否是 Javascript 中的已知模式。
最佳答案
I just can't seem to figure out what it does
它创建一个新对象,该对象通过Object.create
继承[旧]MyObject.prototype
然后用它覆盖 MyObject.prototype
。它还显式添加了一个实际上应该已经存在的 .constructor
属性。
I'm just wondering what benefit those first two lines provide
没有,除非在该片段之前有人损坏了原型(prototype)(例如MyObject.prototype = Object.prototype
)并且这是修复它的尝试。
…and if it's a known pattern in Javascript.
不是这样的。使用Object.create
设置inheritance between constructor-defined "classes" is a known pattern的原型(prototype)链,但是赋值两边的构造函数会有所不同。
关于javascript - 此 Javascript 原型(prototype)片段的用途,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18240994/