隐式绑定:(函数引用有上下文对象) eg obj.fun() 此时this指向obj
(隐式丢失: 被绑定的函数在特定情况下会丢失绑定对象
特定情况:1. 使用另一个变量给函数取别名
2. 将函数作为参数传递会被隐式赋值,回调函数丢失this绑定
)
* a调用指向a,b调用指向b
* 匿名函数 this 指向 window
.call / .apply / .bind 会直接指定this绑定对象 eg .call(obj对象) / .apply(obj对象)
.call / .apply :直接执行
.bind :创建一个函数需要调用才会执行
* .call 接受若干个参数 .apply 接受一个数组 eg .call(this,a,b,c) .apply(this,[a,b])
forEach / filter / map 函数的第二个参数显示了绑定的this
箭头函数中的 this 由外层函数的作用域来决定,this 永远指向最后调用它的对象
箭头函数中的 this 无法通过 .call / .apply / .bind 来直接修改,但可以通过改变作用域中的this来间接修改