var x = 1;
var o = {
x: 2,
y: function() {
console.log(this.x);
}
};
setTimeout(o.y, 1000);
执行结果是:1,this指向了window
var x = 1;
var o = {
x: 2,
y: function() {
console.log(this.x);
}
};
setTimeout(o.y(), 1000);
执行结果是:2,this指向了o
为什么加了()会改变this的指向?
o.y
是传递一个函数,这是window.setTimeout(fn,times)
的语法,表示经过times
毫秒后执行fn
,显然执行者是window
o.y()
就表示执行该函数,立即执行,跟定时器没关系,此时执行者就是o