0
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() 的呢?

4

1 回答 1

4

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

var newobj= Object(oldobj);

newobj等于oldobj。_

来自MDN 上的 Object

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

JavaScript 中的原型继承非常不同。我建议你阅读这篇介绍

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

var newobj= Object.create(oldobj);

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

于 2016-12-21T07:15:34.797 回答