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的第五个()?
答案 0 :(得分:4)
这里没有继承权。甚至没有两个物体。
var newobj= Object(oldobj);
使newobj
等于oldobj
。
如果值已经是对象,则返回值
JavaScript中的原型继承以非常完成。我建议你阅读this introduction。
正如费利克斯·克林所指出的那样,你想要的是Object.create
:
var newobj= Object.create(oldobj);
请注意,如果您没有定义两个原型,这不会产生类,它更像是一种实体,而不是继承。