// 简单对象没有执行上下文。
// 箭头函数的this在定义函数的时候就已经绑定了父执行上下文。
var a = 11;
var obj = {
a: 22,
// 不看调用者obj,而是向上寻找
print: () => {
console.log('print: ' + this.a);
setTimeout(() => {
// 调用者是window,但是箭头函数不看调用者
// 跟外层的this指向是相同的,即输出一样
console.log('print: ' + this.a);
}, 500);
},
say: function () {
// this指向obj
console.log('say: ' + this.a);
setTimeout(function () {
// setTimeout是window上面的方法,this指向window
console.log('say: ' + this.a);
}, 500);
},
};
obj.print(); // 11 11
obj.say(); // 22 11