首页 > 代码库 > arguments对象
arguments对象
arguments
arguments:它是javascript中函数隐含的参数,该对象代表着正在执行的函数和调用它的函数的参数。
[function.]arguments[n]
参数function :选项。当前正在执行的 Function 对象的名字。n :选项。要传递给 function 对象的从0开始的参数值索引。
说明:
Arguments是在函数调用时,除了指定的参数外,还另外创建的一个隐藏对象。Arguments是一个类似数组但并不是数组的对象。它类似数组是因为访问它的方式和数组一样,可以通过
argumets[n]这样的方式来访问对应的每个参数的值,还拥有数组长度属性length,其中n的值是从0开始。最重要的一点:arguments对象存储的是实际传递给函数的参数,而不是函数
声明时所定义的参数列表,而且也不能显示的去创建arguments对象。arguments对象只有在函数开始时才可以用。
下面是arguments对象的用法:
function test(a,b,c){ var funLen = test.length; // 这个值表示的是函数声明时的参数个数,这里是3 var argLen = arguments.length; // 这个值是实际传递给函数的参数个数,从下面调用可以看出这里只传递了一个值,故值为1 alert("funLen=" + funLen + " ,argLen=" + argLen); // 结果:fuLen=3 ,argLen=1 }test(1);
上面的例子表示arguments对象存储的是实际传递给函数的参数,arguments.length表示的是实际传个函数的参数的个数。上面test.length这种方式也就是通过函数名.length的方式获取到
的值是函数声明时所定义的参数列表的个数。
arguments值的修改:
function test(x,y,a){ arguments[2] = 10; alert("a=" + a); // 结果是a=10}test(1,2,3);
function test(x,y,a) { a = 10; alert("arguments[2]=" + arguments[2]); // 结果是arguments[2]=10 }test(1,2,3);
arguments不是数组(Array类)的代码:
Array.prototype.setValue = http://www.mamicode.com/1;>
从上面代码运行的结果可以看出,Array对象扩展了一个setValue的属性,并且值为1,但是当调用test()方法是,会发现结果为undefined,这就说明了setValue不是arguments的属性,
也就是说arguments不是一个数组对象。
arguments对象