函数的属性和方法

时间:2022-09-12 19:13:00
<!DOCTYPE html>
<html lang="en">
<head>

<meta charset="UTF-8">
<title>JavaScript函数进阶第5课</title>

</head>

<body >


<script type="text/javascript">
//javascript中任何函数都有两个属性:length与prototype
function test(num1,num2,num3){
alert(test.length); //函数名.length属性返回当前函数的形参个数
alert(arguments.length); //arguments.length返回当前函数实际传入的参数的个数
}
test();

//javascript中任何函数都有两个非继承而来的两个方法:apply()与call()
//这两个方法都是在特定烦人作用域中调用函数,实际上等于设置函数体内this对象的值
//apply()接收两个参数:第一个是参数是函数运行的作用域;另一个参数是数组(也可以是数组实例也可以是arguments对象)


function sum(a,b) {
return a+b;

}
function applySum(a,b) {
return sum.apply(this,[a,b]);

}
function applySum2(a,b) {
return sum.apply(this,arguments)

}

alert(sum(10,20));
alert(applySum(10,20));
alert(applySum2(10,20));



//call()方法第一个参数也是函数运行的作用域,但第二个参数都是残敌参数,传递给函数的实际参数需要逐个列举出来(用逗号隔开)
function callSum(x,y) {
return sum.call(this,x,y);

}

alert(sum(30,20));
alert(callSum(30,20));

//apply()方法和call()方法通常用来扩充函数运行的作用域而非单纯地传递参数
var color="red";
var o={color:"blue"}
function sayColor() {
alert(this.color);

}

sayColor();// 全局变量red
sayColor.call(this);// 全局变量red
sayColor.color(window); // 全局变量red
sayColor.call(o); //作用域o里面的属性blue






</script>


</body>
</html>