[js物件]JS入門之arguments物件

哈哈哈哈哈我撒發表於2009-07-08

每天一物件,JS天天見,今天我們來看看arguments物件及屬性。arguments物件不能顯式建立,arguments物件只有函式開始時才可用。函式的 arguments 物件並不是一個陣列,訪問單個引數的方式與訪問陣列元素的方式相同。索引 n 實際上是 arguments 物件的 0…n 屬性的其中一個引數。

  下面的示例演示了 arguments 物件的用法,arguments物件和Function是分不開的。

 1function ArgTest(a, b){
 2   var i, s = "The ArgTest function expected ";
 3   var numargs = arguments.length;     // 獲取被傳遞引數的數值。
 4   var expargs = ArgTest.length;       // 獲取期望引數的數值。
 5   if (expargs < 2)
 6      s += expargs + " argument. ";
 7   else
 8      s += expargs + " arguments. ";
 9   if (numargs < 2)
10      s += numargs + " was passed.";
11   else
12      s += numargs + " were passed.";
13   s += "/n/n"
14   for (i =0 ; i < numargs; i++){      // 獲取引數內容。
15   s += "  Arg " + i + " = " + arguments[i] + "/n";
16   }

17   return(s);                          // 返回引數列表。
18}


  以上是arguments物件,由於和Function物件緊密地聯絡在一起。也就是說每一個函式都有自己的argument屬性。下面我們來看看argument屬性:為當前執行的 function 物件返回一個arguments 物件,function 引數是當前執行函式的名稱,可以省略。

   通過 arguments 屬性(相對於Function來說),函式可以處理可變數量的引數。arguments 物件的 length 屬性包含了傳遞給函式的引數的數目。對於arguments 物件所包含的單個引數,其訪問方法與陣列中所包含的引數的訪問方法相同。請看下面的例子:

 1function ArgTest(){
 2   var i, s, numargs = arguments.length;
 3   s = numargs;  
 4   if (numargs < 2)
 5      s += " argument was passed to ArgTest. It was ";
 6   else
 7      s += " arguments were passed to ArgTest. They were " ;
 8   for (i = 0; i < numargs; i++)
 9      {
10         s += arguments[i] + " ";
11      }

12   return(s);
13}

   我們知道每一個物件都有自己的屬性,arguments物件也不例外,首先arguments的訪問猶如Array物件一樣,用0到arguments.length-1來列舉每一個元素。下面我們來看看callee屬性,返回正被執行的 Function 物件,也就是所指定的 Function 物件的正文。callee 屬性是 arguments 物件的一個成員,僅當相關函式正在執行時才可用。callee 屬性的初始值就是正被執行的 Function 物件,這允許匿名的遞迴函式
1function factorial(n){
2  if (n <= 0)
3  return 1;
4  else
5    return n * arguments.callee(n - 1)
6}

7print(factorial(3));
8
  
  到這裡基本上把arguments物件給講完了,不知還有其他的東西嗎?其實很多東西我們都已經很熟悉了,除了上述的callee屬性外,其他的我們都時不時在應用他們。OK,今天的物件學習就到這裡了,明天要看的物件將是Boolean物件。

 

 

來源:http://www.cnblogs.com/xdotnet/archive/2007/04/11/javascript_object_arguments.html

相關文章