【发布时间】:2011-06-30 05:18:20
【问题描述】:
数组仅仅是伪装的对象吗?为什么/为什么不?它们以什么方式(这样/不是)?
我一直认为 JS 中的数组和对象本质上是相同的,主要是因为访问它们是相同的。
var obj = {'I': 'me'};
var arr = new Array();
arr['you'] = 'them';
console.log(obj.I);
console.log(arr.you);
console.log(obj['I']);
console.log(arr['you']);
我是否误导/误会/错误?关于 JS 字面量、原语和字符串/对象/数组/等等,我需要了解什么?
数组/对象仅仅是变相的字符串吗?为什么/为什么不?它们以什么方式(这样/不是)?
【问题讨论】:
-
var arr = ['you':'them'];这不是有效的语法 -
@Robert Harvey - 我试图澄清我的理解。符号是否表示重要性? “数组”与 Javascript 中的对象、字符串等有根本不同吗?我认为这是一个公平的调查。
-
@Martti - 非常正确。那么,与关联数组(或对象)相比,Javascript 数组始终是索引数组,这就是原则上的区别吗?
-
Ecmascript 语言规范在这里:ecma-international.org/publications/standards/Ecma-262.htm。 Ecmascript 和 Javascript 本质上是同一种语言。我能找到的所有 EcmaScript 和 Javascript 语言规范都说数组是对象。
-
@Robert Harvey - 我很感激。我正在寻找指导,一个“这是最好的理解方式”意义上的答案。我不确定是否可以在标准中找到该答案,尽管它有助于理解。我还要注意,我认为这在 SO 中没有得到充分的回答。我希望有人能得到启发,并在回答中真正做到这一点。
标签: javascript arrays javascript-objects