原型继承未按预期工作
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
.
If the value is an object already, it will return the value
JavaScript 中的原型继承非常 不同。我建议您阅读 this introduction.
正如 Felix Kling 所指出的,您想要的可能是 Object.create
:
var newobj= Object.create(oldobj);
请注意,这不会导致 类,如果您不定义两个原型,它更像是一种实例化而不是继承。
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
.
If the value is an object already, it will return the value
JavaScript 中的原型继承非常 不同。我建议您阅读 this introduction.
正如 Felix Kling 所指出的,您想要的可能是 Object.create
:
var newobj= Object.create(oldobj);
请注意,这不会导致 类,如果您不定义两个原型,它更像是一种实例化而不是继承。