对象内箭头函数的this指向疑问:为何返回Window而非自身?
为什么对象中的箭头函数返回Window而非对象自身?
首先要明确箭头函数的核心规则:箭头函数没有自己独立的this,它会继承定义时所在词法作用域的this值,和调用时的上下文无关。
你写的这段代码里:
const object = { arrowFunc: () => this, };
箭头函数arrowFunc是在全局作用域下定义的——对象字面量{}只是一个普通的表达式,并不会创建新的词法作用域。所以这个箭头函数的封闭词法上下文就是全局作用域,而浏览器环境中全局作用域的this就是Window对象,因此调用object.arrowFunc()时,返回的自然是Window。
如果换成普通函数,结果就会不同:
const object = { normalFunc: function() { return this; } }; console.log(object.normalFunc()); // 返回object对象
因为普通函数的this由调用方式决定,当通过object.normalFunc()调用时,this会指向调用它的对象object。
总结:箭头函数的this看的是它定义时所在的作用域,而非调用时的所属对象;对象字面量不形成独立作用域,所以里面的箭头函数直接继承全局作用域的this。
内容的提问来源于stack exchange,提问作者Elbasel
相关产品推荐
相关产品推荐

