JavaScript中的这个东西是什么?

时间:2008-10-07 15:07:17

标签: javascript object-literal

var something = {

wtf: null,
omg: null
};

自从我上次编程以来,我的JavaScript知识仍然非常不完整,但我想我现在已经重新学习了大部分知识。除此之外。我记不起以前见过这个。它是什么?我在哪里可以了解更多信息?

8 个答案:

答案 0 :(得分:17)

它是对象文字语法。 '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

答案 1 :(得分:11)

它是一个具有两个属性的对象文字。通常这是人们创建关联数组或散列的方式,因为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)
}

答案 2 :(得分:6)

来自“我想在Javascript中使用关联数组”的观点(在很多情况下,最终会使用对象文字)

来自"Mastering Javascript Arrays"

关联数组是一个使用字符串而不是数字作为索引的数组。

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对象。

底线是 - 不要尝试使用关联数组,代码是什么 - 对象属性,而不是数组。

答案 3 :(得分:5)

这是一个对象文字(或者,有时候,带有哈希类的库中的 vanilla对象)。

同样的事情:

var o = new Object();
o.wtf = null;
o.omg = null;

答案 4 :(得分:4)

这是一个对象字面值。它实际上等同于以下内容:

var something = new Object();
something["wtf"] = null;
something["omg"] = null;

答案 5 :(得分:2)

我相信它是一个具有2个属性的对象,WTF和OMG。

你可以说

something.wtf = "myMessage";
alert(something.wtf);

查看JSON.ORG

答案 6 :(得分:1)

此代码:

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;

答案 7 :(得分:0)

这是内联JavaScript对象实例化的一个示例。