2013-07-16 75 views
0

這將是類似數組的對象,但爲什麼我們無法使用點符號而不是括號表示法訪問它?使用點符號訪問數組或類似數組的對象的元素

function testArray (rat){ 
    return typeof arguments; 
} 

console.log(testArray("test")); // object 

function testArray (rat){ 
    return arguments.0; //[0] is work 
} 

console.log(testArray("test")); // error 
+0

['arguments arguments'](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions_and_function_scope/arguments)is _「an **類似於數組的對象**對應於參數傳遞給一個函數。「_並且,不,你不能通過點符號訪問n-index屬性。 – canon

回答

5

你的問題似乎是,爲什麼我們不能使用點符號這樣的訪問陣列和陣列相同的元件

var v = a.0; 

然後,它的描述in the ECMAScript specification

點符號由以下句法轉換解釋:

MemberExpression。 IdentifierName

和標識符可以不以數字as described here開始:

IdentifierName ::

IdentifierStart

IdentifierName IdentifierPart

IdentifierStart ::

UnicodeLetter

$

_

\ UnicodeEscapeSequence

至於推理,剛剛被提出的數字標識符名稱將使它很難寫號文字。一個異常可能只是爲數組訪問而設計的,但是這會使語言更加複雜,並且會從通用的C語言語法中脫離出來,而沒有任何真正的收益。

0

您可以:

var arr = []; 
arr.foo = 'foo'; 

console.log(arr.foo); // => 'foo' 
+0

@WouterHuysentruit當然,但這是一個艱難的旅行:) – yckart

+0

我懷疑它。它看起來不像數組類似對象的相關用法。 –

+0

@dystroy當然!但是他的問題讓我無法理解我的大腦,這就是結果;) – yckart