【发布时间】:2013-04-01 23:51:12
【问题描述】:
我有这个代码:
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 的副本,我可以在其中添加/覆盖属性。这个对吗?
【问题讨论】:
-
“如何在这里调用工作以使我的初级火柴人(初级)拥有火柴人的所有方法”---通过分配。您将实例分配为原型。
标签: javascript oop call prototype