我在以下上下文中遇到了一个小问题this
:
在 JavaScriptthis
中,总是指我们正在执行的函数的“所有者”,或者更确切地说,指的是函数作为方法的对象。
所以,这段代码:
var o={
f:function ()
{
console.log(this); //the owner of the function is `o`
}
}
console.log(o.f()) // this shows the `o` as this
一切都好。
那么为什么这个代码
var o = {
f: function ()
{
return function ()
{
console.log(this);
}
}
}
console.log(o.f()())
表明这this
是全局对象/窗口?
o.f()
返回一个函数,然后我执行它。但 Hoster 对象仍然是o
。那么为什么它显示主机为window
?