我似乎在打字稿类上遇到了范围问题,我试图看看我是否可以摆脱匿名函数。我一直在使用箭头方法而不是。例如 -
//blah is globally available
export class Foo {
addSomeListeners = () => {
blah.addListener( this.eventHandler );
}
eventHandler( someProperties ){
blah.get( somePropreties, this.anotherCallback );
}
anotherCallback = ( data ) => {
//do something with the data
}
}
所以在代码的其他地方我创建了一个Foo实例,我调用了addSomeListeners方法。这很好用。 稍后会触发一个事件并调用eventHandler方法 - 一切都还不错。
现在在eventHandler方法中,它执行一些操作并调用需要回调的get方法。在这一点上,这个'这个' property为null - 所以它不知道' anotherCallback'是。
我猜它有一个简单的范围问题,但我现在似乎可以解决它。我希望能够删除所有匿名函数,所以不是在blah.get(...)签名中定义方法,而是可以从Foo类中调用一个方法来重用。
编辑 - 这个问题不重复,因为副本没有处理Typescript,它确实提到了ECMA6箭头功能,但没有解决我遇到的问题。所以是非常相似,但IMO不够相似,不能重复。
例如,我有一个Foo实例(比如foo),我调用foo.addSomeListeners()。现在用这种方法来说这个'是foo - 这是我所期待的。 然后稍后由于事件而调用了eventHandler方法 - 但是在那个'这个'一片空白。