Frage

var something = {

wtf: null,
omg: null
};

Ihr JavaScript Wissen ist immer noch schrecklich lückenhaft, da ich damit programmierte letzte, aber ich glaube, ich das meiste davon jetzt neu gelernt habe. Mit dieser Ausnahme. Ich erinnere mich nicht, jemals vorher zu sehen. Was ist es? Und wo kann ich mehr darüber?

War es hilfreich?

Lösung

Es ist ein Objektliteral mit zwei Eigenschaften. Normalerweise ist dies, wie die Menschen erstellen assoziative Arrays oder Hashes weil JS nicht nativ, dass die Datenstruktur unterstützen. Obwohl beachten Sie, dass es immer noch ein vollwertiges Objekt können Sie auch Funktionen als Eigenschaften hinzufügen:

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

Und Sie können die Eigenschaften durchlaufen eine for-Schleife:

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

Andere Tipps

Es ist Literalsyntax widersprechen. Die ‚WFT‘ und ‚omg‘ sind die Namen der Eigenschaften, während, null und nichtig sind die Eigenschaftswerte.

Es ist äquivalent zu:

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

Überprüfen Sie Mozillas Dokumentation auf Objektliterale aus: http: //developer.mozilla. org / En / Core_JavaScript_1.5_Guide: Literale # Object_Literals

Erklärung vom Standpunkt „Ich assoziatives Array in Javascript will“ (das, was in vielen Fällen Objektliterale für wird verwendet, am Ende)

"Mastering Javascript Arrays"

Ein assoziatives Array ist ein Array, welches eine Zeichenfolge statt einer Nummer 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 nicht hat, und unterstützt nicht assoziative Arrays. Alle Arrays in Javascript Allerdings ... sind Objekte und Javascript Objekt Syntax gibt eine grundlegende Emulation eines assoziativen Arrays. Aus diesem Grunde über den Beispielcode funktioniert tatsächlich. Seien Sie gewarnt, dass dies nicht eine echte Array ist, und es hat echte Gefahren, wenn Sie versuchen, es zu benutzen. Die ‚Person‘ Element im Beispiel wird ein Teil der Array-Objekt Eigenschaften und Methoden, wie .length, .Sort (), .splice () und alle anderen integrierten Eigenschaften und Methoden.

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 wird, weil wir eigentlich nicht irgendetwas in das Array setzen, wir setzen es in assoziativem datenfeld des Objekt. assoziatives datenfeld [0] nicht definiert wird.

Die Schleife im obigen Beispiel abholt auch alle Methoden, Eigenschaften und Prototypen, die mit dem Array hinzugefügt wurden und nicht nur Ihre Daten. Viele Probleme, die Menschen mit der Prototype-Bibliothek ist, dass ihre assoziative Arrays brechen, weil Prototype eine paar nützlichen Funktionen Prototype zum Array-Objekt und für i in x Schleifen fügt diese zusätzliche Methoden abholen. Das ist die pitfal von Array / Objekte als einen armen Mannes assoziatives Array verwendet wird.

Als letztes Beispiel, wird der vorherige Code funktioniert unabhängig davon, ob Sie assoziatives datenfeld als Array ([]) definieren, ein Objekt ({}), ein regulärer Ausdruck (//), String ( "") oder eine beliebige anderes Javascript-Objekt.

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

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

Das Gleiche gilt wie:

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

Dies ist ein Objektliteral. Es ist effektiv entspricht dem folgenden:

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

Ich glaube, sein ein Objekt mit zwei Eigenschaften, WTF und OMG.

Sie könnte sagen,

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

Besuche JSON.ORG

Mit diesem Code:

var something = {wtf:null}

Hat die gleiche Wirkung wie:

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

oder für unnötige Ausführlichkeit:

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

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

ist
something["wtf"]=null;

So können Sie:

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

Dies ist ein Beispiel für Inline-JavaScript Objektinstanziierung.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top