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

发布于 2022-09-12 22:57:01 字数 417 浏览 39 评论 0

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,这是为什么呢?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

醉城メ夜风 2022-09-19 22:57:01

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

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

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

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

残月升风 2022-09-19 22:57:01

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

向日葵 2022-09-19 22:57:01

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

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()
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文