将对象分配给"this"

Ing*_*ürk 5 javascript

假设我有一个类和一些静态辅助方法,如下所示:

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 );
}
Run Code Online (Sandbox Code Playgroud)

我想做的是这样的:

var instance = new MyClass( 2 );

instance.revealVar(); // alerts 2
instance.replaceMe( 40 ).revealVar(); // alerts 42
Run Code Online (Sandbox Code Playgroud)

原因是我的类有一个稍微复杂的结构,我不想每次手动分配所有内部变量,而是替换整个对象.有一个简单的方法吗?

0x4*_*2D2 0

只返回新实例怎么样:

function MyClass(myVar) {
    // ...

    this.replaceMe = function (value) {
        return MyClass.staticHelper(this, value);
    }

    // ...
}

MyClass.staticHelper = function (instance, value) {
    return new MyClass( instance.myVar += value );
}
Run Code Online (Sandbox Code Playgroud)