您的位置:首页 > 移动开发

JS函数中的 apply() 和 call()

2015-06-12 16:15 627 查看
//【JS函数属性和方法】

//1.length属性,表示函数希望接收的参数的个数
function sayName(name){
alert(name);
}
function sum(num1,num2){
return num1 + num2;
}
alert(sayName.length); //1
alert(sum.length);	   //2

//2.apply()方法接受两个参数:一个是在其中运行函数的作用域,另一个是参数数值
function sum(num1,num2){
return num1 + num2;
}

function callSum1(num1,num2){
return sum.apply(this,arguments);//传入arguments对象
}
function callSum2(num1,num2){
return sum.apply(this,[num1,num2]);//传入数组
}

alert(callSum1(10,10));//20
alert(callSum2(10,10));//20

//2.call()方法与apply()方法的作用相同,区别在于接收参数的方式不同
function sum(num1,num2){
return num1 + num2;
}

function callSum(num1,num2){
return sum.call(this,num1,num2);
}

alert(callSum(10,10));//20

//事实上,传递参数并非apply()和call()真正的用武之地;它们的强大的地方是能够扩充函数赖以运行的作用域。
window.color = "red";
var o = {color:"blue"};
function sayColor(){
alert(this.color);
}
sayColor();//red

sayColor.call(this);   //red
sayColor.call(window); //red
sayColor.call(o);	   //blue
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: