【发布时间】:2017-08-23 16:35:50
【问题描述】:
我有以下结构 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()
【问题讨论】:
-
obj.test()将 test 作为 方法 调用,语法为context dot method。传递obj.test通过 test 作为对该 函数的引用, 没有上下文,并且不再作为方法。您必须将函数绑定到正确的上下文,因为它们不知道this,或者总是调用obj.test
标签: javascript ecmascript-6 class-reference