【发布时间】:2020-07-30 05:13:37
【问题描述】:
问题
我今天刚开始学习JS/ES7,想看看我是否理解this正确。
根据下面的两个代码sn-ps,我猜this的目的是可以选择是否要继承父函数的变量?
如果这是正确的,那么在第一个示例中是否存在在 setInterval() 中使用 this 的合法用例?
var countup = {
counter: 0,
start:function(){
var countup = this;
setInterval(function(){
countup.counter++;
}, 1000);
}
};
countup.start();
和
var countup = {
counter: 0,
start:function(){
setInterval( () => {
this.counter++;
}, 1000);
}
};
countup.start();
更新
问我上述问题的另一种方法是:
任何人都可以在setInterval() 中想出一个很好的this 用例吗?
var countup = {
counter: 0,
start:function(){
var countup = this;
setInterval(function(){
// insert good use case of `this` inside this function?
countup.counter++;
}, 1000);
}
};
countup.start();
【问题讨论】:
-
不适用于
setInterval,不,因为您知道this === window在那里,但在许多其他情况下,回调可能想要使用this参数。 jQuery 就是一个很好的例子。
标签: javascript ecmascript-2016