为什么this
关键字返回Window
但没有课程项?
public setfunc() {
setTimeout(function test() {
console.log(this);
}, 1000);
}
答案 0 :(得分:1)
与JavaScript一样,this
具有高度的内容性。
当您运行计时器时,没有任何对象或元素作为事件回调的目标,因此您将获得全局window
范围。
您可以使用箭头功能在创建回调时维护范围:
setTimeout(() => {
console.log(this);
}, 1000);
}
或手动处理......
var _x = this;
setTimeout(function test() {
console.log(_x);
}, 1000);
}