var obj = {
name: 'name',
foo: function () {
console.log(this); // Object {name: "name"}
setTimeout(function () {
console.log(this); // Window
}, 1000);
},
foo2: function () {
console.log(this); // Object {name: "name"}
setTimeout(() => {
console.log(this); // Object {name: "name"}
}, 2000);
}
}
先说结论:setTimeout中所执行函数中的this,永远指向window!!注意是要延迟执行的函数中的this哦!!
var obj = {
name: 'name',
foo: function () {
console.log(this); // Object {name: "name"}
setTimeout(function () {
console.log(this); // Window
}, 1000);
},
foo2: function () {
console.log(this); // Object {name: "name"}
setTimeout(() => {
console.log(this); // Object {name: "name"}
}, 2000);
},
foo3: function(){
console.log(this);
setTimeout(function(){console.log(this);}.bind(this), 2000)
}
}