arguments变量: 跟python的 *args 很像,都是[ ],都是用于获取传入的参数值。
function f(a, b, c){
alert(arguments.length); // result: "2"
a = 100;
alert(arguments[0]); // result: "100"
arguments[0] = "qqyumidi";
alert(a); // result: "qqyumidi"
alert(c); // result: "undefined"
c = 2012;
alert(arguments[2]); // result: "undefined"
}
f(1, 2);
apply函数与call函数
作为该函数对象的_init_函数。
apply()方法接收两个参数:一个
是在其中运行函数的作用域,另一个是参数数组。其中,第二个参数可以是Array 的实例,也可以是arguments 对象
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
有什么用么?通过 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
// 用apply就行。