它是对象文字语法.'wft'和'omg'是属性名称,而null和null是属性值.
它相当于:
var something = new Object(); something.wtf = null; something.omg = null;
查看有关对象文字的mozilla文档:http://developer.mozilla.org/En/Core_JavaScript_1.5_Guide:Literals#Object_Literals
它是对象文字语法.'wft'和'omg'是属性名称,而null和null是属性值.
它相当于:
var something = new Object(); something.wtf = null; something.omg = null;
查看有关对象文字的mozilla文档:http://developer.mozilla.org/En/Core_JavaScript_1.5_Guide:Literals#Object_Literals
它是一个具有两个属性的对象文字.通常这是人们创建关联数组或散列的方式,因为JS本身不支持该数据结构.虽然注意它仍然是一个完全成熟的对象,你甚至可以添加函数作为属性:
var myobj = { name: 'SO', hello: function() { alert(this.name); } };
您可以使用for循环遍历属性:
for (i in myobj) { // myobj[i] // Using the brackets (myobj['name']) is the same as using a dot (myobj.name) }
来自"我想在Javascript中使用关联数组"的观点(在很多情况下,最终会使用对象文字)
来自"掌握Javascript阵列"
关联数组是一个使用字符串而不是数字作为索引的数组.
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
Javascript没有,也不支持关联数组.但是... Javascript中的所有数组都是对象,Javascript的对象语法提供了关联数组的基本模拟.出于这个原因,上面的示例代码实际上将起作用.请注意,这不是一个真正的阵列,如果您尝试使用它,它会有真正的陷阱.示例中的'person'元素成为Array对象的属性和方法的一部分,就像.length,.sort(),.splice()和所有其他内置属性和方法一样.
您可以使用以下循环遍历对象的属性...
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函数,而对于x循环中的i,会选择其他方法.这就是使用Array/objects作为穷人的关联数组的一个小问题.
作为最后一个示例,无论您将associativeArray定义为Array([)),Object({}),Regular Expression(//),String("")还是任何其他Javascript对象,前面的代码都将起作用.
底线是 - 不要尝试使用关联数组,代码是什么 - 对象属性,而不是数组.
它是一个Object文字(或者有时候是带有Hash类的库中的vanilla对象).
同样的事情:
var o = new Object(); o.wtf = null; o.omg = null;