概念
this的四种绑定分别是:
默认、new、显式、隐式
这四种绑定分别与函数的四种调用相关联:
默认绑定:函数直接调用。非严格模式下this指向window,严格是undefined
new绑定:函数作为构造函数调用。this指向新建对象
显式绑定:函数使用call.apply调用。this执行定义的对象
隐式绑定:函数作为属性方法调用。this指向调用的属性
绑定优先级
new > 显式 > 隐式 > 默认
例如 new Person.call(window) 后,this以new为准,指向新对象而不是window
多重硬绑定的结果
硬绑定指的是bind。如果一个函数进行了多重硬绑定,那么绑定的结果将以第1次为准。原因是bind返回的是一个闭包函数,多次绑定对第一次的结果并不影响。
软绑定
软绑定旨在解决bind后无法修改this和参数。