你不知道的JS(this)---#

默认绑定

------------

隐式绑定

------------

显式绑定

(apply,call)

硬绑定解决绑定丢失问题(bind)

------------

new绑定

new调用函数时(构造函数调用时)发生步骤

1.创造一个全新的对象

2.这个新对象会被执行[[Prototype]]连接

3.这个新对象会绑定到函数调用的this

4.如果函数没有返回其他对象,自动返回这个新对象

new会改变硬绑定函数的this,使用new硬绑定函数主要是为了预先设置函数的一些参数

------------

判断this

1.是否在new中调用,this=>新创建的对象

2.时候通过apply,call或者硬绑定,this=>指定对象

3.时候有某个上下文对象中调用obj.foo(),this=>obj

4.this=>window(underfined)

 

================

以null,underfunded传入call。。会在调用时候被忽略,会把this默认绑定到全局对象

更安全的做法是使用Object.create(null)

==================

箭头函数的绑定无法被修改

转载于:https://www.cnblogs.com/lemonib/p/10079804.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值