說我有一個類和一些靜態輔助方法是這樣的:分配對象「這個」
function MyClass (myVar) {
this.myVar = myVar;
this.replaceMe = function (value) {
// this will fail
this = MyClass.staticHelper(value);
return this;
}
this.revealVar = function() {
alert(this.myVar);
}
}
MyClass.staticHelper = function (instance, value) {
return new MyClass(instance.myVar + value);
}
我想要做的是這樣的:
var instance = new MyClass(2);
instance.revealVar(); // alerts 2
instance.replaceMe(40).revealVar(); // alerts 42
的原因是,我的類有一個稍微複雜的結構,我不想每次手動分配所有內部變量,而是替換整個對象。有沒有簡單的方法來做到這一點?
看起來你只是想'返回MyClass.staticHelper(this,value);'。你不能替換'this',但你可以返回一個新的類似的對象。 – 2013-03-24 12:41:10
這隻會返回調用鏈中的新對象,但不會實際替換該實例。 – 2013-03-24 12:41:57
是的,那是不可能的。你可以爲整個類創建一個包裝器,並保留對實際實例的內部引用。 – 2013-03-24 12:42:47