箭头函数的this指向谁_this 的不同场景如何取值

这个
分类: 1:当作普通函数被调用时候,this指向的对象是window this 的指向一般理解为谁调用,this指向谁
比如:
这里的a()这里相当于window.a();

7242b339eb1f2c0b35fbcbf9d9664726.png

下一个例子:

77fc4b065464651f79208460f29dfb4c.png

这里面的fn 是由0对象调用的,所以此时this指向的是对象o
例子3:

32f3503a22071c8cb0bcb81184609370.png

这个例子打印出来的却是2,也就说明了,
如果一个函数中有this,但是调用包含了多层,那么this指向的也只是它上一级的调用对象尽管对象b中没有属性a,这个this指向的也是对象b,因为this只会指向它的上一级对象,不管这个对象中有没有this要的东西。
例4:比较特殊

e0fbd49d4239733b67c96362f2e09aca.png

这里this指向的是window,是不是有些蒙了?其实是因为你没有理解一句话,这句话同样至关重要。

this永远指向的是最后调用它的对象也就是看它执行的时候是谁调用的,例子4中虽然函数fn是被对象b所引用,但是在将fn赋值给变量j的时候并没有执行所以最终指向的是window,这和例子3是不一样的,例子3是直接执行了fn。



2:使用call,apply, bind ,this指向的对象是传入的对象
bind()方法主要就是将函数绑定到某个对象,
bind()会创建一个函数,函数体内的this对象的值会被绑定到传入bind()第一个参数的值,
例如,fn.bind(obj),实际上可以理解为obj.fn(),这时,fn函数体内的this自然指向的是obj

a24e557fbdaf979848c31c913090cdff.png

打印出的结果为:

acac6e2e2f8387ff2fbab57ac5631d1f.png


3:作为对象的方法被调用的时候,this返回的是调用的对象
4:在class 方法中
5:在箭头函数中被调用,指代的是箭头函数的上级作用域



6:构造函数中的this

b1d2f9b65a48394c84f935bee62d997f.png

此处是因为使用了new 关键字
new关键字就是创建一个对象实例,指向它构造函数的this
但是注意这里有一个☝️特例
就是当构造函数和 return 相遇的时候~如果返回值是一个对象,那么this指向的就是那个返回的对象,如果返回值不是一个对象那么this还是指向函数的实例。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值