关于setTimeout()中的this指向存在一些疑问。

 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的指向?


慕桂英3389331
浏览 435回答 1
1回答

侃侃无极

o.y是传递一个函数,这是window.setTimeout(fn,times)的语法,表示经过times毫秒后执行fn,显然执行者是windowo.y()就表示执行该函数,立即执行,跟定时器没关系,此时执行者就是o
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript