使函数的原型成为构造函数本身

时间:2017-09-15 13:26:17

标签: javascript constructor prototype

合理难以描述,可能最好通过代码。

function Base() {}
Base.prototype = function() {
    // I am a constructor
}
const baseInstance = new Base()
const secondInstance = new baseInstance() // baseInstance is not a constructor

我理解如果我将构造函数设为.prototype的命名属性会非常简单,但我希望能够在我的代码中执行上面的模式。有可能吗?

1 个答案:

答案 0 :(得分:0)

我想我已经解决了。这有点像黑客攻击。只需将Object.assign()插入构造函数中即可。

function Base() {
    return Object.assign(
        function SecondConstructor() {},
        Base.prototype
    )
}
Base.prototype = function() {
    // This can now have properties which
    // will be attached to the constructor
}
const baseInstance = new Base()
// baseInstance is now a constructor
const secondInstance = new baseInstance()

未经测试,但我在我的代码中使用了类似的概念。

享受!