Function.prototype.call 和 Function.prototype.apply都是很是经常使用的方法。他们的做用如出一辙,区别仅在于传入参数形式的不一样。
数组
apply 接受两个参数,第一个参数制定了函数体内 this 对象的指向,第二个参数为一个带下标的集合,这个集合能够为数组,也能够为类数组,apply 方法吧这个集合中的元素做为参数传递给调用的函数:bash
var func = function( a, b, c ) {
alert([ a, b, c ]);
}
func.apply( null, [ 1, 2, 3 ]);
复制代码
1.这段代码,运行了函数 func, 而且把数组[ 1, 2, 3 ]里面的数做为 func 的参数传进去。
2.将 func 的 this 指向 null,因此 func 指向默认宿主对象 windowapp
call传入的参数数量不固定,跟 apply 类似,第一个参数是 this 的指向,区别是从第二个参数开始日后,每一个参数被依次传入函数:函数
var func = function( a, b, c ) {
alert([ a, b, c ]);
}
func.call(null, 1, 2, 3 );
复制代码