apply的“非改变this“的用法

须知少年凌云志,曾许人间第一流。这篇文章主要讲述apply的“非改变this“的用法相关的知识,希望能为你提供帮助。
说到apply,大家都是知道是改变this指向的,也都会立马和call联系在一起,MDN官网上也是如是说:

apply的“非改变this“的用法

文章图片

其实我们在平常使用call和apply的时候,都是想到他们的改变函数的this的功能,
正如MDN上面说的apply和call只有唯一一点区别,就是:apply方法的二个参数接受的是“参数数组”!
也就是说:apply的第二个“参数数组”最终会打散被调用apply的函数所调用;
因此我们也可以利用这一特性,进行数组的打散的操作,如MDN中所述:
apply的“非改变this“的用法

文章图片

当然我们这里也可以使用ES6的扩张语句,如下:
apply的“非改变this“的用法

文章图片

之所以要写这篇文章就是告诫自己:思维不要太局限,就像觉得apply就只能用于改变this的指向的功能。当我们咋一看Math.max.apply(null, arr)这种会蒙圈,其实这里就是省去了自己展开了数组的操作。
在发现疑惑的时候,可以放空自己的过去的知识,重新阅读API。重新去思考这个问题。
【apply的“非改变this“的用法】就像自己以前做物理题目,脑子里永远别记忆题型,脑子里只需要记住公式和原理,所有的题目都是去思考分析再解答,以不变应万变!!而不是把题目归类,再回忆改类题型的解题方法。

    推荐阅读