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
根据原型(prototype)继承,oldobj 与 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 中的原型(prototype)继承的方式非常不同。我建议您阅读this introduction .
正如 Felix Kling 所指出的,您想要的可能是 Object.create
:
var newobj= Object.create(oldobj);
请注意,这不会创建类,如果您不定义两个原型(prototype),它更像是一种实例化而不是继承。
关于javascript - 原型(prototype)继承未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41257092/