我对上下文有疑问。什么是处理打字稿中的上下文的正确方法?如果我理解正确,我有关闭的问题?当我在一个函数内调用一个函数时,它在对象(类)中,那么它是一个闭包吗?
但我是否必须使用self = this
或者是否有更好的打字稿方式?因为我真的不喜欢这个解决方案。而且我不想约束每件小事。
我对tolkien的例子:
export class SomeClass {
private declaration;
constructor() {}
ngOnInit(){
var self = this;
some code
var interval = setInterval(function() {
self.someFunction();
}, 1000);
}
someFunction() {
something
}
}
感谢您的任何建议
答案 0 :(得分:4)
在这种情况下,您可以使用arrow function语法,该语法将捕获this
的值以引用类原型,如您所愿:
ngOnInit() {
some code
var interval = setInterval(() => {
this.someFunction();
}, 1000);
}
答案 1 :(得分:1)
除箭头功能外,您还可以使用bind function:
ngOnInit(){
var interval = setInterval(function() {
this.someFunction();
}.bind(this), 1000);
}
或者@IgorRaush说,这更优雅:
ngOnInit(){
var interval = setInterval(this.someFunction.bind(this), 1000);
}
在某些情况下我更喜欢。