次のようなクラスといくつかの静的ヘルパー メソッドがあるとします。
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
その理由は、私のクラスの構造が少し複雑で、すべての内部変数を毎回手動で割り当てるのではなく、オブジェクト全体を置き換えたくないからです。そうする簡単な方法はありますか?