apply方法通过不同数量的参数调用函数

average函数是一个称为可变参数或可变元的函数的例子。它可以接收任意数量的参数。

average(1,2,3);//2
average(1);//1
average(3,1,4,1,5,9,2,6,5);//4
average(2,7,1,8,2,8,1,8);//4.625

固定元数的average函数的版本可能会使用单个数字数组作为其参数。

averageOfArray([1,2,3]);//2
averageOfArray([1]);//1
averageOfArray([3,1,4,1,5,9,2,6,5]);//4
averageOfArray([2,7,1,8,2,8,1,8]);//4.625
可变参数的版本更加简洁。可变参数函数具有便捷的语法,让调用者预先明确地知道提供了多少个参数。

var scores = getAllScores( );

如何使用average函数计算其平均值呢?

average(/* ? */);

函数对象配有一个内置的apply方法。它与call方法非常类似。apply方法需要一个参数数组,然后将数组的每一个元素作为调用的单独参数调用该函数。除了参数数组,apply方法指定第一个参数绑定到被调用函数的this变量。由于average函数没有引用this变量,我们可以简单地传递null。

var scores = getAllScores();
average.apply(null,scores);

如果scores有三个元素,那么以上代码的行为与average(scores[0],scores[1],scores[2])一致。

apply方法也可用于可变参数方法。例如,butter对象包含一个可变参数的append方法,该方法添加元素到函数内部的state数组中。

var butter = {
	state:[],
	append:function(){
		for(var i=0,n<arguments.length;i<n;i++){
			this.state.push(arguments[i]);
		}
	}
};
append方法可以接受任意数量的参数进行调用。

butter.append("Hello,");
butter.append("firstName","","lastName","!");
butter.append(newline);
借助于apply方法的this参数,我们可以指定一个可计算的数组调用append方法:butter.append.apply(butter,getInputStrings());

总结:

使用apply方法指定一个可计算的参数数组来调用可变参数的函数。

使用apply方法的第一个参数给可变参数的方法提供一个接收者。


















  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值