JavaScript在方法中使用apply(this,arguments)
arguments 对象是JavaScript 函数内置的对象 ,包含了函数调用的参数数组。
function findMax() {
var i, max = arguments[0];
console.log(arguments);
if(arguments.length < 2) return max;
for (i = 0; i < arguments.length; i++) {
if (arguments[i] > max) {
max = arguments[i];
}
}
return max;
}
console.log("最大值为:",findMax(1, 123, 500, 115, 44, 88));
apply() 方法接受两个参数:
- 第一个参数为thisObject,调用时采用传入的thisObject代替函数体中this的指向,是函数运行的作用域。
- 第二个参数是一个参数数组(arguments),函数会用数组的值取代“参数列表"。
var A={
name:"我是小A",
fun:function(sex,age){
console.log("大家好! "+this.name+" 我是个"+sex+" 今年"+age+"岁")
}
}
var B = {
name:"我是小B"
};
var monies = ["男生",20];
A.fun.apply(B,monies);
将A的方法应用到对象B上,在控制台输出为:
大家好! 我是小B 我是个男生 今年20岁
现在将apply(this,argument)放到方法中使用:
var A={
name:"我是小A",
funA:function(sex,age){
console.log("大家好! "+this.name+" 我是个"+sex+" 今年"+age+"岁")
}
}
var B = {
name:"我是小B",
funB:function()
{
console.log(this.name,arguments);
A.funA.apply(B,arguments)
}
};
B.funB("男生",20);