2008-10-07 76 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; 
相關問題