js call()与apply()

来源:互联网 发布:疑心暗鬼动作数据下载 编辑:程序博客网 时间:2024/05/29 15:19


j
s中call()与apply()相同与不同这篇文章写的很清楚:

http://www.cnblogs.com/fighting_cp/archive/2010/09/20/1831844.html



call, apply方法相同点:

foo.call(this, arg1,arg2,arg3) == foo.apply(this,arguments)==this.foo(arg1, arg2, arg3) 

call, apply都属于Function.prototype的一个方法,它是JavaScript引擎内在实现的,因为属于Function.prototype,所以每个Function对象实例,也就是每个方法都有call, apply属性.既然作为方法的属性,那它们的使用就当然是针对方法的了.这两个方法是容易混淆的,因为它们的作用一样,只是使用方式不同.



call, apply方法区别:

      从第二个参数起, call方法参数将依次传递给借用的方法作参数, 而apply直接将这些参数放到一个数组中再传递, 最后借用方法的参数列表是一样的.

 

例:Math.max

Math.max(param1,param2) --参数不支持数组

var max = Math.max.apply(null,array)  --这样可得到一个数组中最大值

apply(Math.max, arr),arr是一个参数列表,

对于max方法,其参数是若干个数,即Math.max(a, b, c, d, ...)

当使用apply时,把所有参数加入到一个数组中,即array = [a, b, c, d, ...]

代入到原式,Math.max.apply(null, [a, b, c, d, ...])

实际上等同于Math.max(a, b, c, d, ...)

在此处,使用apply的优点是在部分JS引擎中提升性能。

 

 

 


原创粉丝点击