首页 > 代码库 > 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对象