老实说,我不确定这种行为的原因是什么:systemjs,babel或我自己的错。我使用类作为自定义控件控制器并在自变量中保存类引用。显然,任何后续控制器实例都会覆盖它。
我创建了一个简单的存储库来演示: 克隆,安装,运行实时服务器或首选服务器。您将看到2个按钮,每个按钮都是自定义控件。单击按钮仅影响一个控件。
https://github.com/alexkolt/selfIsThis
如何使用ES6课程?
答案 0 :(得分:0)
你并没有真正使用ES6课程。您不需要保存对this
的引用 - 只需在类方法中直接访问它。你现在拥有它的方式,CustomControlController的所有实例共享一个self
变量。
class CustomControlController {
constructor() {
this.value = 0;
}
click() {
var newValue = this.value * 2;
this.value = newValue;
}
}
export default CustomControlController;
答案 1 :(得分:0)
我应该发布代码,抱歉。
您希望保存对self的引用的原因是例如在回调中调用它可能会导致不同的引用。 我试图这样做:
var self; class Test { constructor(dependency) { self = this; self.dependency = dependency; } method() { self.dependency().then(value => self.property = value); } }
就像在模块外部声明self之前所提到的那样。我没有意识到这会发生,因为文件将被包装在一个闭包中。 Joe Clay的回答是正确的,但为了做我想要做的事情,需要在每个需要它的方法中声明自己。
class Test { constructor(dependency) { this.dependency = dependency; } method() { var self = this; this.dependency().then(value => self.property = value); } }