我有这个代码:
function Stickman() {
//some methods and properties
}
function JuniorStickman() {
Stickman.call(this);
this.p = new value // override a property in Stickman
}
JuniorStickman.prototype = new Stickman();
junior = new JuniorStickman();
我从 MDN 的一个示例中改编了这段代码:https ://developer.mozilla.org/en-US/docs/JavaScript/Introduction_to_Object-Oriented_JavaScript
我不明白的是: call() 和行
JuniorStickman.prototype = new Stickman()
似乎做同样的事情。如果我注释掉该行
JuniorStickman.prototype = new Stickman();
我的 JuniorStickman 仍然具有 Stickman 的所有方法和属性;真的; 他的原型属性现在是 JuniorStickman 而不是 Stickman,但这似乎并不重要。
这里如何调用工作以使我的 Junior Stickman(初级)拥有 Stickman 的所有方法,并且原型分配是否必要?
据我了解, call() 并没有真正给我继承权。我只是得到一种 Stickman 的副本,我可以在其中添加/覆盖属性。这个对吗?