var something = {
wtf: null,
omg: null
};
自从我上次使用 JavaScript 编程以来,我的 JavaScript 知识仍然非常零散,但我想我现在已经重新学习了其中的大部分内容。除了这个。我不记得以前见过这个。它是什么?我在哪里可以了解更多信息?
var something = {
wtf: null,
omg: null
};
自从我上次使用 JavaScript 编程以来,我的 JavaScript 知识仍然非常零散,但我想我现在已经重新学习了其中的大部分内容。除了这个。我不记得以前见过这个。它是什么?我在哪里可以了解更多信息?
它是对象文字语法。'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 中的关联数组”的角度进行解释(在许多情况下,对象文字最终被用于)
关联数组是使用字符串而不是数字作为索引的数组。
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() 和所有其他内置属性和方法一样。
您可以使用以下循环遍历对象的属性...</p>
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/objects 作为穷人的关联数组的缺陷。
作为最后一个示例,无论您是否将 associativeArray 定义为 Array ([])、Object({})、Regular Expression (//)、String("") 或任何其他 Javascript 对象,前面的代码都将起作用.
底线是——不要试图使用关联数组,它们是什么的代码——对象属性,而不是数组。
它是一个Object 字面量(或者,有时是带有 Hash 类的库中的一个vanilla 对象)。
与以下内容相同:
var o = new Object();
o.wtf = null;
o.omg = null;
这是一个对象字面量。它实际上等效于以下内容:
var something = new Object();
something["wtf"] = null;
something["omg"] = null;
我相信它是一个具有 2 个属性的对象,WTF 和 OMG。
你可以说
something.wtf = "myMessage";
alert(something.wtf);
查看 JSON.ORG
这段代码:
var something = {wtf:null}
与以下效果相同:
var something={};
something.wtf=null;
或者对于不必要的冗长:
var something=new Object();
something.wtf=null;
记住最后一行与
something["wtf"]=null;
所以你可以使用:
var myName="wtf";
something[myName]=null;
这是内联 JavaScript 对象实例化的示例。