js_深入函数_函数的属性apply和call

function sum(num1,num2){
return num1+num2;
}

function callSum1(){
	return sum.apply(this,arguments);
}
function callSum2(){
	return sum.call(this,arguments[0],arguments[1]);
}
function callSum3(num1,num2){
	return sum.call(this,num1,num2);
}

注意:(1).apply([thisObj [,argArray] ]);和call([thisObject[,arg1 [,arg2 [,...,argn]]]]);作用相同,不同点在于第二个参数apply是以数组传入,而call需要一个一个参数传入。

(2).arguments可以获取传入的实参,即使函数没有传入形参。如果没有使用arguments,就应该传入形参,通过形参获取实参。

var color="red";
function showColor(){
    alert(this.color);
}
function Circle(color){
	this.color=color;
	//this.showColor=showColor;
}
var c=new Circle("yellow");

showColor.apply(this);
showColor.apply(c);

(1).apply和call的第一个参数代表作用域,使用apply和call对象就不需要定义方法了,只需要指定作用域即可

(2).当作用域是this,即代表window对象,就会调用全局变量的color=“red”,当作用域是对象c的时候,就会调用对象的属性color=“yellow”

猜你喜欢

转载自blog.csdn.net/HZPHYT/article/details/81164200