猿问

为什么settimeout中的函数this指向window?

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指向Object

是因为settimeout是window对象的方法还是说当做直接调用一个函数?


桃花长相依
浏览 1618回答 2
2回答

zangbianxuegu

因为 setTimeout 这个方法是挂载到 window 对象上的。setTimeout 执行时,执行回调函数,回调函数中的 this 指向调用 setTimeout 的对象,window
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答