未调用JavaScript构造函数

时间:2012-05-10 06:12:54

标签: javascript inheritance constructor

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

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构造函数。打印到控制台。为什么不覆盖构造函数?我该如何覆盖呢?

1 个答案:

答案 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中有关继承的详情。