源码盲点知识点讲解

67 阅读1分钟

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);

image.png