var normalArray = [];
normalArray[1] = 'This is an enumerated array';
alert(normalArray[1]); // outputs: This is an enumerated array
var associativeArray = [];
associativeArray['person'] = 'John Smith';
alert(associativeArray['person']); // outputs: John Smith
var associativeArray = [];
associativeArray["one"] = "First";
associativeArray["two"] = "Second";
associativeArray["three"] = "Third";
for (i in associativeArray) {
document.writeln(i+':'+associativeArray[i]+', ');
// outputs: one:First, two:Second, three:Third
};
在上面的例子中,associativeArray.length将为零,因为我们实际上没有将任何内容放入Array中,而是将其放入associativeArray的对象中。associativeArray[0]将是未定义的。 上面示例中的循环还将获取任何方法、属性和已经添加到数组中的原型,而不仅仅是你的数据。人们使用Prototype库的很多问题是他们的关联数组会中断,因为Prototype向Array对象添加了一些有用的Prototype函数,而for i in x循环会拾取这些额外的方法。这就是使用Array/的陷阱对象作为穷人的关联数组。 作为最后一个示例,无论您将associativeArray定义为Array([])、Object({})、regular expression(//)、String(“”)还是任何其他JavaScript对象,前面的代码都将正常工作。 底线是-不要尝试使用关联数组,代码是它们是什么-对象属性,而不是数组。
8条答案
按热度按时间clj7thdc1#
它是对象文字语法。'wft'和'omg'是属性名,而null和null是属性值。
它相当于:
查看Mozilla关于对象文字的文档:http://developer.mozilla.org/En/Core_JavaScript_1.5_Guide:Literals#Object_Literals
6vl6ewon2#
它是一个有两个属性的对象文字。通常这是人们创建关联数组或哈希的方式,因为JS本身不支持这种数据结构。尽管注意它仍然是一个成熟的对象,但你甚至可以添加函数作为属性:
你可以使用for循环来遍历属性:
ws51t4hk3#
从“我希望JavaScript中有一个关联数组”的Angular 进行解释(这是在许多情况下最终使用对象文字的原因)
从"Mastering JavaScript Arrays"
关联数组是使用字符串而不是数字作为索引的数组。
JavaScript没有,也不支持关联数组.然而... JavaScript中的所有数组都是对象并且JavaScript的对象语法给出了关联数组的基本模拟.为此上面的示例代码将实际工作。请注意,这不是一个真实的的数组,如果您尝试使用它,它会有真正的陷阱。示例中的'person'元素将成为Array对象的一部分'的属性和方法,就像.length、.sort()、.splice()以及所有其他内置属性和方法一样。
您可以使用以下循环遍历对象的属性…
在上面的例子中,associativeArray.length将为零,因为我们实际上没有将任何内容放入Array中,而是将其放入associativeArray的对象中。associativeArray[0]将是未定义的。
上面示例中的循环还将获取任何方法、属性和已经添加到数组中的原型,而不仅仅是你的数据。人们使用Prototype库的很多问题是他们的关联数组会中断,因为Prototype向Array对象添加了一些有用的Prototype函数,而for i in x循环会拾取这些额外的方法。这就是使用Array/的陷阱对象作为穷人的关联数组。
作为最后一个示例,无论您将associativeArray定义为Array([])、Object({})、regular expression(//)、String(“”)还是任何其他JavaScript对象,前面的代码都将正常工作。
底线是-不要尝试使用关联数组,代码是它们是什么-对象属性,而不是数组。
xggvc2p64#
它是一个对象字面量(或者,有时,在具有Hash类的库中是一个普通对象)。
这是相同的事情:
vawmfj5a5#
这是一个对象文字。它实际上等效于以下内容:
eeq64g8w6#
我相信它是一个有两个属性的对象,wtf 和 omg。
你可以说
查看 * json.org *。
hyrbngr77#
此代码:
具有与以下相同的效果:
或者不必要的冗长:
记住最后一行和
因此,您可以用途:
gajydyqb8#
这是一个内联JavaScript对象示例化的示例。