2008-10-07 79 views
9
var something = { 

wtf: null, 
omg: null 
}; 

自从我上次编程以来,我的JavaScript知识仍然非常糟糕,但我认为我现在已经了解了大部分知识。除此之外。我不记得曾经见过这个。它是什么?我在哪里可以了解更多信息?JavaScript中的这个东西是什么?

+0

现在这个问题回答真实,我想补充AppJet有一个简单的JavaScript教程,课程的“对象”,解释它真的很好: http://appjet.com/学习程序/课程/对象 – 2008-10-07 15:47:43

回答

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) 
} 
+0

JavaScript不支持关联数组/散列?我会争辩说,一切都是一个关联数组/散列。 – 2008-10-07 16:46:22

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

+0

哦,我明白了。那么,根据链接,字符串是“”还是“”,因为对象是{}?不知道这是否是描述它的最好方式,但我想我现在明白了。谢谢。 – 2008-10-07 15:14:25

2

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

你可以说

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

退房JSON.ORG

0

这是内嵌的JavaScript对象实例化的一个例子。

4

这是一个对象字面值。这实际上等效于以下:

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

这是一个对象字面(或,有时,一个香草对象在图书馆用哈希类)。

同样的事情:

var o = new Object(); 
o.wtf = null; 
o.omg = null; 
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将是零,因为我们实际上并没有将任何东西放入数组,我们把它变成associativeArray的对象。 associativeArray [0]将是未定义的。

上述示例中的循环还将选取已添加到数组的所有方法,属性和原型,而不仅仅是数据。人们对Prototype库有很多问题,因为Prototype会向Array对象添加一些有用的Prototype函数,并且在x循环中我会选择这些附加的方法。这是使用Array/objects作为穷人的关联数组的关键。作为最后一个例子,无论您是否将associativeArray定义为数组([]),对象({}),正则表达式(//),String(“”)或者其他任何其他的Javascript对象。

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

+0

感谢您的信息,但我已经主要知道这一点。 – 2008-10-07 15:22:16

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; 
相关问题