apply()
与 call()
作为所有函数的方法,定义为:在指定this
值与参数的情况下调用某个函数或方法。两者的区别是:call()
方法接受的是若干个参数的列表,而apply()
方法接受的是一个包含多个参数的数组。
这两个方法的关键点在于指定this
与参数,所以我们以此为切入点,看看在实际的工作中有哪些用法。
使用apply()
支持可变参数
所有的语言,有一些我们经常要做的事情,似乎都被语言的开发人员莫名其妙的忽略了,JavaScript 也不例外。比如查找数组中的最小值与最大值。在 JavaScript 中似乎没有这两种功能,但如果随意探索的话,可能会发现Math
对象有两个名为min()
与max()
的方法。
一开始我们认为,这些方法可能就是我们想要的答案,但测试以后,我们发现第个方法都需要可变长度的参数列表,而不是数组。这根本不能满足我们的需求,也就是说,Math.max()
的调用,需要像下面这样:
1 2 3 |
var largest= Math.max(1, 2); var largest= Math.max(1, 2, 3); var largest= Math.max(1, 2, 3, 4); |