我有一个实现继承的功能:
inherit = function(base) {
var child = function() { console.log('Crappy constructor.'); };
child.prototype = new base;
child.prototype.constructor = child;
return child;
}
我以为我可以像这样使用它:
var NewClass = inherit(BaseClass);
NewClass.prototype.constructor = function() {
console.log('Awesome constructor.');
}
但是当我像这样创建 NewClass 的新实例时:
var instance = new NewClass();
我将消息 Crappy构造函数。打印到控制台。为什么不覆盖构造函数?我该如何覆盖呢?
答案 0 :(得分:2)
您返回child
,这是一个打印Crappy constructor
的功能。无论如何,如果您调用该功能,将打印Crappy constructor
。
注意流程:
child = function to print 'crappy'
child.prototype.blabla = function to print 'Awesome'
inherit returns child
NewClass = child
现在,当你调用NewClass时,会调用child。
除此之外,我认为你想要child.constructor.prototype而不是prototype.constructor。
编辑:请参阅Javascript here中有关继承的详情。