//【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