javascript之动态改变this上下文

call、aplly、bind三种方法都能实现改变函数执行时的上下文,简单来说就是改变函数运行时的this指向

区别

1、 call(): 第一个参数表示this指向的新目标,从第二个参数开始以参数列表的形式展现 用法:a.call(b,1,2,3);表示要把a函数的this指向修改为b的this指向,并且运行a函数,传进去的参数是(1,2,3)。

2、 apply():第一个参数表示this指向的新目标,第二个参数接受的是一个数组作为参数传入。 用法:a.apply(b,[1,2]);表示要把a函数的this指向修改为b的this指向,并且运行a函数,传进去的参数[1,2]

3、bind()方法会创建一个新的函数(和apply、call不同就是不会马上的执行: new = a.bind(b)),称为绑定函数,当调用这个绑定函数时,绑定函数会以创建它时传入bind()方法的第一个参数作为this,传入的bind()方法的第二个以及以后的参数加上绑定函数运行时本身的参数按照顺序作为原函数的参数来调用原函数

注意:bind这个方法在IE6~8下不兼容
原文地址:https://www.cnblogs.com/emilyzz/p/14067727.html