2017-09-15 107 views
2

合理難以描述,可能通過代碼最好。使函數的原型構造函數本身

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

我知道這將是非常簡單的,如果我做了構造的.prototype命名屬性,但我希望能在我的代碼做上面的圖案。可能嗎?

回答

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

未經測試,但我一直在我的代碼中使用類似的概念。

享受!

相關問題