假设我有一个类和一些静态帮助方法,例如:
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
原因是我的类的结构有点复杂,我不想每次手动分配所有内部变量,而是替换整个对象。有简单的方法可以做到吗?
return MyClass.staticHelper(this, value );
。你不能替换this
,但可以返回一个新的、类似的对象。 - Felix Kling