【问题标题】:Prototypical inheritance is not working as expected原型继承没有按预期工作
【发布时间】:2016-12-21 07:13:43
【问题描述】:
var oldobj = {
  firstm: function () { console.log("firstm"); },
  secondm: function () { console.log("secondm"); }
};

var newobj= Object(oldobj);

newobj.thirdm = function () { console.log("thirdm"); };

oldobj.fourthm = function () { console.log("4thm"); };

newobj.fifthm = function () { console.log("5thm"); };

oldobj.fifthm(); // logs "5thm" in console

根据原型继承,oldobj 没有链接到 newobj 函数。但是在上面的例子中,oldobj 是如何访问 newobj 的 Fifthm() 的呢?

【问题讨论】:

  • 您是否将Object()Object.create() 混淆了?

标签: javascript javascript-inheritance


【解决方案1】:

这里没有继承。甚至没有两个对象。

var newobj= Object(oldobj);

使newobj 等于oldobj

来自MDN on Object

如果该值已经是一个对象,它将返回该值

JavaScript 中的原型继承非常 以不同的方式完成。我建议你阅读this introduction

正如 Felix Kling 所指出的,您想要的可能是Object.create

var newobj= Object.create(oldobj);

请注意,这不会创建类,如果您不定义两个原型,它更像是一种实例化而不是继承。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-09-19
    • 2019-12-03
    • 1970-01-01
    • 2013-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多