js 中 this 绑定

隐式绑定:(函数引用有上下文对象) 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来间接修改