javascript - 使用 Object.create 作为原型(prototype)的原型(prototype)继承将 [Object] 作为实例的原型(prototype)

标签 javascript

有人建议 Derived.prototype = Object.create(Base.prototype); 优于 Derived.prototype = new Base(); (如 this SO answer )。

这是有道理的,但是当我使用这种方法时,就像这样:

function B(){};
B.prototype.doA = function(){};

function D(){};
D.prototype = Object.create(B.prototype);

var d = new D();

console.log(Object.getPrototypeOf(d)); 

它将 Object {doA: function} 输出到控制台,并且记录 console.log(d) 显示带有 __proto__: Object 的对象>。为什么不是D {doA: function}

其他一切似乎都有效:

d.doA();
d instanceOf D; // true
d instanceOf B; // true

fiddle

看起来很奇怪。我做错了什么吗?

最佳答案

jsFiddle Demo

当您使用Object.create方法时,它通常也与构造函数赋值配对。

//...
D.prototype = Object.create(B.prototype);
D.prototype.constructor = D;
//...

关于javascript - 使用 Object.create 作为原型(prototype)的原型(prototype)继承将 [Object] 作为实例的原型(prototype),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28819028/

相关文章:

javascript - 检查对象文字是否为 'object'

javascript - .addEventListener - 长列表

javascript - 使用 JAVASCRIPT 从 HTML 上的 JSON 数组读取数据

javascript - 如何确定使用 JavaScript 进行电子邮件混淆是否有效?

javascript - 替换 jQuery 单击事件上的标题文本

javascript - HTML 图像 onmouseover 事件未触发

javascript - 检查特定行是否存在

javascript - 如何在回调中访问正确的“this”?

javascript - D3 树形图 - 递归框未出现

javascript - Electron:从 React 向 Electron 主进程发送 IPC 消息?