参考文章:https://www.zhihu.com/question/20289071
引用:call 和 apply 都是为了改变某个函数运行时的 context 即上下文而存在的,换句话说,就是为了改变函数体内部 this 的指向。因为 JavaScript 的函数存在「定义时上下文」和「运行时上下文」以及「上下文是可以改变的」这样的概念。
这个上下文就造就了call和apply的来源,即可以改变一个函数中this的指向,
obj1.call(obj2,arguments) 相当于obj2借用了obj1的方法
而call于apply的区别仅仅是call接受具体的参数,而apply接受一个数组。