js中的apply 和 call

A.call(B),意思就是把A的上下文(一般是this)借给B用
Array.prototype.slice.apply,意思就是把数组对象的slice方法,借给apply第一个参数所指定的对象使用
apply第一个参数必须是对象,哪怕是null
所以 Array.prototype.slice.apply(abc) ,就相当于把slice借给abc这个对象(JS里函数也是对象)使用。因为函数是没有slice方法的,直接调用 abc.slice 是要报错的 
原文地址:https://www.cnblogs.com/qinqiu/p/5088016.html