Javascript 理解“的用法”;这";在两种不同的情况下
我不明白为什么本例中的“this”返回“NaN”: 在这个例子中,它指的是“this.value”:Javascript 理解“的用法”;这";在两种不同的情况下,javascript,Javascript,我不明白为什么本例中的“this”返回“NaN”: 在这个例子中,它指的是“this.value”: 我知道在第一种情况下,“this”指向窗口对象,我只是不明白为什么会这样。setInterval函数几乎看起来像这样: function setInterval(callback, time, ...args) { // native complicated code callback(...args); } 这里重要的是调用(回调(…)),因为JS通过调用函数的方式确定上下文
我知道在第一种情况下,“this”指向窗口对象,我只是不明白为什么会这样。setInterval函数几乎看起来像这样:
function setInterval(callback, time, ...args) {
// native complicated code
callback(...args);
}
这里重要的是调用(回调(…)
),因为JS通过调用函数的方式确定上下文。在第二个示例中,bar
的上下文是inst
,您称之为inst.bar()
,因此直接告诉js这是什么。如果你直接调用一个函数,例如
const bar = inst.bar;
bar(); // call without context
您不指定上下文,因此,
此
默认为窗口
内部设置间隔
此
将是全新的,它不知道计数器
。您可以使用bind
将上下文this
传递给setInterval
函数计数器(){
this.num=0;
this.timer=setInterval(函数add(){
这个.num++;
console.log(this.num);
}.绑定(本),5000);
}
Counter()
谢谢您的回答。但是SetInterval的上下文不应该是计数器吗,因为它是在它内部调用的吗?@hernannope,js不是这样工作的。
function setInterval(callback, time, ...args) {
// native complicated code
callback(...args);
}
const bar = inst.bar;
bar(); // call without context