javascript - 此 Javascript 原型(prototype)片段的用途

标签 javascript

抱歉,我无法更好地表达这一点。但我遇到了一些如下代码:

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/

相关文章:

javascript数组问题

javascript - 使用 Chart.js 选项的 Rails 应用程序

javascript - <div> 双重扩展,html 和 <div> 构建问题

javascript - Jquery/Javascript - 单击 SVG 时在 IE 上检测到元素外的单击失败

javascript - 双下拉列表框页面重定向php wordpress

javascript - 区分同名属性和方法

javascript - 如果元素长度超过特定值,自动创建第二行

javascript - 如何防止 IE 10 在使用快捷方式时触发打印?

javascript - Node 通过构造函数创建实例

javascript - 找出多个数组中的差异。使用减少