(1) call 、bind 、 apply 这三个函数的第一个参数都是 this 的指向对象,当
第一个参数为null、undefined的时候,默认指向window。
在 ES6 的箭
头函数下, call 和 apply 将失效,因为箭头函数内部没有自己的this
(2)第二个参数才有区别:
a. call的第二个参数是用逗号分隔的参数列表形式
b. apply的第二个参数是数组的形式
c. bind的使用和call相似,但是bind的返回值是函数 ,bind 方法不会
立即执行,而是返回一个改变了上下文 this 后的函数;而call和apply
是立即执行的
(3)应用场景
a.求数组中最大值与最小值
var arr = [1,2,3,89,46]
var max = Math.max.apply(null,arr)//89
var min = Math.min.apply(null,arr)//1
b.将伪数组转化为真数组
Array.prototype.slice.call(伪数组名)
c.数组追加
var arr1 = [1,2,3];
var arr2 = [4,5,6];
var total = arr1.push.apply(arr1, arr2);
console.log(arr1); //[ 1, 2, 3, 4, 5, 6 ]