我有這個JavaScript:如何包裝構造函數?
var Type = function(name) {
this.name = name;
};
var t = new Type();
現在我想補充一點:
var wrap = function(cls) {
// ... wrap constructor of Type ...
this.extraField = 1;
};
所以我可以做:
wrap(Type);
var t = new Type();
assertEquals(1, t.extraField);
[編輯]我想的實例屬性,而不是類(靜態/共享)屬性。
在包裝函數中執行的代碼應該像我將它粘貼到真正的構造函數中那樣工作。
Type
的類型不應該改變。
按照我的理解,你想添加一個額外的屬性給構造函數?以便更多的新實例擁有該屬性? – Joseph 2012-04-11 07:20:29
可能你只需要在'wrap()'函數內改變'Type'的原型。例如:'var wrap = function(cls){cls.prototype.extraField = 1; };'?或者可能最好是用'extraField'成員創建從'Type'繼承的新'Type2'? – 2012-04-11 07:27:54
你能描述一下你的問題嗎? – seteh 2012-04-11 07:28:57