请问各位,console出来的为什么是window,不是obj,是与匿名函数、代码块的执行销毁有关吗
这是因为在全局作用域中,函数的上下文默认为 window 对象,所以当在全局作用域中调用函数时,函数内的 this 指向 window 对象。
在代码块中定义的函数会将它们的上下文绑定到全局作用域中,因此它们的 this 也是 window 对象。
如果想让函数内的 this 指向对象 obj,需要使用 call、apply 或 bind 等方法明确地将 this 绑定到 obj 上。
let obj = {
getThis:function(){
return function(){
console.log(this)
}
}
,showThis:function(){
console.log(this)
}
}
你可以看到,getThis 返回的是一个方法,这个方法执行后,this指向的是调用对象,所以在控制台调用这个方法时,会返回 window,而showThis 则是明确指向自己
因为你调用方法的位置是window