原型继承没有按预期工作

时间:2016-12-21 07:13:43

标签: javascript javascript-inheritance

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的第五个()?

1 个答案:

答案 0 :(得分:4)

这里没有继承权。甚至没有两个物体。

var newobj= Object(oldobj);

使newobj等于oldobj

来自MDN on Object

  

如果值已经是对象,则返回值

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

正如费利克斯·克林所指出的那样,你想要的是Object.create

var newobj= Object.create(oldobj);

请注意,如果您没有定义两个原型,这不会产生类,它更像是一种实体,而不是继承。