JS中关于This指向

看了这片文章相信你绝对对This指向有一个全新的认识,文章虽短,但全是精华

  1. 沿着作用域向上找最近一个function(不是箭头函数),看这个function是如何执行的
  2. this指向取决于所属function是如何调用的,而不是定义
  3. function调用一般分为以下几种情况
  • 作为函数去调用,即:foo() 指全局对象(globalThis),注意严格模式下的问题,严格模式下undefined
  • 作为方法去调用,即:obj.foo() 指向最终调用这个方法的对象
  • 作为构造函数去调用,即:new Foo() 指向一个新的对象Foo {}
  • 特殊调用,即:foo.call()、foo.apply()、foo.bind() 指向参数指定成员
  • 找不到所属function,就是全局对象

实例:

// 1、作为函数去调用
function foo () {
  console.log(this)
}
foo()  // this指向全局对象(globalThis)

// 2、作为方法去调用
const obj = {
  foo: function() {
    console.log(this)
  }
}
obj.foo() // this指向obj这个对象

// 3、作为构造函数去调用
function Person() {
  console.log(this)
}
new Person()  // 指向Person {}这个新的对象

// 4、特殊调用
const obj = {
  name: 'jack'
}
function foo() {
  console.log(this)
}
foo.call(obj) // this指向obj这个对象
foo.call(1) // this指向1
-----------------------------------------------------
foo.apply(obj) // this指向obj这个对象
foo.apply(1) // this指向1
-----------------------------------------------------
foo.bind(obj)() // this指向obj这个对象
foo.bind(1)() // this指向1

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值