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

wtf: null, 
omg: null 
}; 

Mein JavaScript-Wissen ist immer noch schrecklich lückenhaft, seit ich es zum letzten Mal programmiert habe, aber ich denke, dass ich das meiste davon jetzt wieder gelernt habe. Abgesehen davon. Ich kann mich nicht erinnern, das jemals zuvor gesehen zu haben. Was ist es? Und wo kann ich mehr darüber erfahren?Was ist das in JavaScript?

+0

Nun ist diese Frage beantwortet ist, kann ich hinzufügen AppJet ein einfaches JavaScript-Tutorial hat, erklären die Lektion auf „Objekten“ es wirklich schön: http://appjet.com/ Lernen-zu-Programm/Unterricht/Objekte –

Antwort

11

Es ist ein Objektliteral mit zwei Eigenschaften. Normalerweise erstellen Benutzer so assoziative Arrays oder Hashes, weil JS diese Datenstruktur nicht nativ unterstützt. Obwohl zur Kenntnis, dass es immer noch ein vollwertiges Objekt ist, können Sie auch Funktionen als Eigenschaften hinzufügen:

var myobj = { 
    name: 'SO', 
    hello: function() { 
     alert(this.name); 
    } 
}; 

Und Sie können durch die Eigenschaften iterieren mit einer for-Schleife:

for (i in myobj) { 
    // myobj[i] 
    // Using the brackets (myobj['name']) is the same as using a dot (myobj.name) 
} 
+0

JavaScript unterstützt keine assoziativen Arrays/Hashes? Ich würde argumentieren, dass alles ein assoziatives Array/Hash ist. –

17

Es ist Objekt literale Syntax. 'Wft' und 'omg' sind Eigenschaftsnamen, während null und null die Eigenschaftswerte sind.

Es ist äquivalent zu:

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

Check out Dokumentation des mozilla auf Objektliterale: http://developer.mozilla.org/En/Core_JavaScript_1.5_Guide:Literals#Object_Literals

+0

Oh, ich verstehe. Also, nach dem Link, eine Zeichenfolge ist zu "" oder "wie ein Objekt zu {}? Nicht sicher, ob das der beste Weg ist, es zu beschreiben, aber ich denke, ich verstehe es jetzt. Vielen Dank. –

2

ich seine ein Objekt mit zwei Eigenschaften glauben, WTF und OMG.

Sie

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

Check-out JSON.ORG

0

Dies ist ein Beispiel für Inline-JavaScript-Objektinstanziierung sagen können.

4

Dies ist ein Objektliteral. Es ist effektiv äquivalent zu folgenden:

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

Es ist ein Objektliteral (oder manchmal ein Vanille Objekt in Bibliotheken mit Hash-Klassen).

Gleiche wie:

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

Erklärung aus dem " ich möchte ein assoziatives Array in Javascript“Sicht (was in vielen Fällen Objektliterale für wird verwendet, am Ende)

Von "Mastering Javascript Arrays"

Ein assoziatives Array ist ein Array, das statt einer Zahl eine Zeichenfolge als Index verwendet.

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 hat keine assoziativen Arrays und unterstützt diese auch nicht. Allerdings ... Alle Arrays in Javascript sind Objekte und die Objektsyntax von Javascript gibt eine grundlegende Emulation eines assoziativen Arrays. Aus diesem Grund wird der obige Beispielcode funktionieren. Seien Sie gewarnt, dass dies kein echtes Array ist, und es hat echte Fallstricke, wenn Sie versuchen, es zu verwenden. Das Element 'person' im Beispiel wird ebenso wie .length, .sort(), .splice() und alle anderen integrierten Eigenschaften und Methoden Teil der Eigenschaften und Methoden des Array-Objekts.

Sie können eine Schleife durch die Eigenschaften eines Objekts mit der folgenden Schleife ...

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 
}; 

In dem obigen Beispiel associativeArray.length Null sein werden, weil wir nicht wirklich etwas in das Array gelegt haben, setzten wir es in assoziativeArray-Objekt. assoziativeArray [0] ist nicht definiert.

Die Schleife im obigen Beispiel erfasst auch alle Methoden, Eigenschaften und Prototypen, die zum Array hinzugefügt wurden und nicht nur Ihre Daten. Viele Probleme mit der Prototype-Bibliothek bestehen darin, dass ihre assoziativen Arrays brechen, weil Prototype dem Array-Objekt ein paar nützliche Prototyp-Funktionen hinzufügt und i-in-x-Schleifen diese zusätzlichen Methoden aufgreift. Das ist die Plage, wenn man Array/Objekte als assoziatives Array eines armen Mannes benutzt. Als letztes Beispiel funktioniert der vorherige Code unabhängig davon, ob Sie assoziativesArray als ein Array ([]), ein Objekt ({}), einen regulären Ausdruck (//), einen String ("") oder. Definieren jedes andere Javascript-Objekt.

Die Quintessenz ist - versuchen Sie nicht, assoziative Arrays zu verwenden, Code für das, was sie sind - Objekteigenschaften, nicht Arrays.

+0

Danke für die Information, aber das weiß ich meistens schon. –

1

Dieser Code:

var something = {wtf:null} 

hat die gleiche Wirkung wie:

var something={}; 
something.wtf=null; 

Oder unnötige Ausführlichkeit:

var something=new Object(); 
something.wtf=null; 

Und es ist nützlich, sich daran zu erinnern, dass die letzte Zeile der ist wie

something["wtf"]=null; 

So können Sie verwenden:

var myName="wtf"; 
something[myName]=null;