这种情况下的this为什么指向window呢?

window.identity = "The Window"

let object = {
  identity: "My Object",
  testThis: this.identity,
  getIdentityFunc7() {
    function innerFunction() {
      console.log(this.identity)
    }
    innerFunction()
  },
}

object.getIdentityFunc7()  // The Window

标准函数中,this引用把函数当成方法调用的上下文对象,所以我认为这个innerFunction函数中的this应该引用的是getIdentityFunc7的这个对象。
但是事实确实this引用的window,这是为什么呢?

阅读 2.2k
3 个回答

呃, 这里就是无上下文啊.

getIdentityFunc7这里是有上下文this, 在内部定义的function是找不到上下文的,
根据this的绑定优先级最终会找到全局对象window.

可以去找找关于this的绑定规则

new绑定 > 显示绑定 > 隐式绑定 > 默认绑定

简单点说 其实就是谁调用它this指向谁 而不是你这个函数在谁里面就该指向谁

我觉的楼上说的挺对, 谁调用指向谁

var obj={
  name:'obj',
 fn() {
    var innerFn =function(){
        console.log(this) //window
    }
    innerFn()   //<==>  window.innerFn()
 },
 fn2(){
    this.innerFn =function(){
        console.log(this) //obj
    }
    this.innerFn()
 }
}
obj.fn()
obj.fn2()
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题