1

我有一个实现继承的功能:

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();

我收到消息糟糕的构造函数。打印到控制台。为什么构造函数不被覆盖?以及如何覆盖它?

4

1 回答 1

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 继承的更多信息。

于 2012-05-10T06:18:37.760 回答