【问题标题】:JavaScript constructors never calledJavaScript 构造函数从未被调用
【发布时间】:2016-03-01 19:40:26
【问题描述】:

在 JS 构造函数中有些东西并不完全有意义。 当我做这样的事情时:

function extends(child, parent) {
    child.prototype = Object.create(parent.prototype);
    child.prototype.constructor = child;
};

永远不会调用“构造函数”。意思是,“child”函数确实被调用了,因为我们正在执行“new child()”。但如果我正在做这样的事情:

function extends(child, parent) {
    child.prototype = Object.create(parent.prototype);
    child.prototype.constructor = function() {
        alert("test");};
};

“警报”永远不会触发,因为真正的“子”函数以任何方式被调用。

这是为什么呢?如何将构造函数重写为我想要的?

【问题讨论】:

  • 只需将覆盖的child 传递给extends 函数?
  • 在实例化new child() 时,将调用child 构造函数。 ….prototype.constructordoesn't matter at all的值。

标签: javascript class oop constructor


【解决方案1】:

我理解“问题”。构造函数在创建时永远不会被调用。它只是为了知道使用“prototype.constructor”的对象类型是什么。 你不能给它不同的函数来运行,除非那个函数是你想要运行的构造函数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-05-27
    • 1970-01-01
    • 2017-09-19
    • 1970-01-01
    • 1970-01-01
    • 2016-07-12
    • 2013-05-08
    • 2011-02-12
    相关资源
    最近更新 更多