原型继承未按预期工作

Prototypical inheritance is not working as expected

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 没有 link 到 newobj 的功能。但是在上面的例子中,oldobj 是如何访问 newobj 的 fifthm() 的?

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

var newobj= Object(oldobj);

使 newobj 等于 oldobj.

来自MDN on Object

If the value is an object already, it will return the value

JavaScript 中的原型继承非常 不同。我建议您阅读 this introduction.

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

var newobj= Object.create(oldobj);

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