一、fn.call(thisArg, arg1, arg2...)
- 调用fn函数
- 改变函数的this指向----变为thisArg
- 主要作用:用来实现ES5中的类继承
二、fn.apply(thisArg, [argsArray])
- 调用fn函数
- 改变函数this指向
- 参数必须是数组形式
- 主要应用:借助Math内置对象的函数
- 主要应用2:将一个数组添加到另一个数组---优点,无需for循环添加;concat方法返回的是新的数组;
三、fn.bind(thisArg,arg1, arg2...)
- 不会调用函数
- 可以改变函数内部this的指向
- 返回由指定的this值和初始化参数改造的原函数的拷贝;(一个新的函数)
- 主要应用:setTimeout等定时器,里面的回调函数的this默认指向浏览器(windows),使用bind()重绑定,使得回调函数中的this指向类的实例,从而简化代码;