javaScript中this题

17 篇文章 0 订阅
本文深入探讨了 JavaScript 中的 this 指针在不同场景下的绑定规则,包括函数调用、显示绑定、箭头函数以及闭包等。通过示例代码解析了 foo1 到 foo4 函数中 this 的指向变化,揭示了函数调用方式对 this 的影响。理解 this 的绑定对于编写正确的 JavaScript 代码至关重要。
摘要由CSDN通过智能技术生成
var name = 'window'

var person1 = {
  name: 'person1',
  foo1: function () {
    console.log(this.name)
  },
  foo2: () => console.log(this.name),
  foo3: function () {
    return function () {
      console.log(this.name)
    }
  },
  foo4: function () {
    return () => {
      console.log(this.name)
    }
  }
}

var person2 = { name: 'person2' }

// person1.foo1(); // person1(隐式绑定)
// person1.foo1.call(person2); // person2(显示绑定优先级大于隐式绑定)

// person1.foo2(); // window(不绑定作用域,上层作用域是全局,person只是定义了一个对象,并不会产生作用域)
// person1.foo2.call(person2); // window 箭头函数特殊 向上层作用域找
 
// person1.foo3()(); // window(独立函数调用) person1.foo3()拿到了return出来的函数,再调用属于独立调用return出来的这个函数
// person1.foo3.call(person2)(); // window(独立函数调用)person1.foo3.call(person2)拿到的函数进行的是独立函数的调用
// person1.foo3().call(person2); // person2(最终调用返回函数式, 使用的是显示绑定)

// person1.foo4()(); // person1(箭头函数不绑定this, 上层作用域this是person1)foo4: function ()的作用域是person1
// person1.foo4.call(person2)(); // person2(上层作用域foo4: function ()被显示的绑定了一个person2)
// person1.foo4().call(person2); // person1(上层找到person1)箭头函数不被call绑定 还是上层作用域this是person1(foo4: function ()的作用域是person1)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值