面试题答案
一键面试foo()
调用时this
的指向:this
指向全局对象(在浏览器环境中是window
,在Node.js非严格模式下是global
,严格模式下为undefined
)。- 原因:当函数以普通函数的形式调用时(没有通过对象的属性来调用),在非严格模式下,
this
会默认指向全局对象。在严格模式下,如果没有明确的调用上下文,this
为undefined
。在这段代码中,foo()
是普通函数调用,所以在非严格模式下this
指向全局对象。
obj.method()
调用时this
的指向:this
指向obj
对象。- 原因:当函数作为对象的方法被调用时,
this
指向调用该方法的对象。这里method
是obj
对象的方法,所以当obj.method()
调用时,this
指向obj
。