ES6 中类的引用丢失

Ala*_*res 3 javascript class-reference ecmascript-6

我有以下结构 Javacript es5-es6 并且控制器类丢失了类 Get 中的引用,我已经在调查,但找不到如何避免丢失引用。

class Controller {
    constructor() {
        this.name = 'Test';
    }
    test() {
        console.log(1, this.name);
    }
}

referenceController = new Controller();
// working reference: console.log(1, 'Test');
referenceController.test();


class Get {
    method() {
        return {
            controller: referenceController.test
        }
    }
}

// Lost self reference: console.log(1, undefined)
new Get().method().controller() 
Run Code Online (Sandbox Code Playgroud)

Ale*_*ara 7

在本节中,您将测试函数添加为返回对象的属性。

{
    controller: referenceController.test
}
Run Code Online (Sandbox Code Playgroud)

然后,当您将其作为该对象的方法调用时 ( method().controller())this引用该对象,并name从该对象中读取该属性。

您可以绑定上下文以保留引用:

referenceController.test.bind(referenceController)
Run Code Online (Sandbox Code Playgroud)