2013-07-16 37 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