Domanda

var something = {

wtf: null,
omg: null
};

La mia conoscenza di JavaScript è ancora orribilmente irregolare dall'ultima volta che ho programmato, ma penso di averli riappresi gran parte ora. Tranne questo. Non ricordo di aver mai visto questo prima d'ora. Che cos'è? E dove posso saperne di più?

È stato utile?

Soluzione

È un oggetto letterale con due proprietà. Di solito è così che le persone creano array o hash associativi perché JS non supporta nativamente quella struttura di dati. Sebbene si noti che è ancora un oggetto completo, è anche possibile aggiungere funzioni come proprietà:

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

E puoi scorrere le proprietà usando un ciclo for:

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

Altri suggerimenti

È la sintassi letterale dell'oggetto. 'Wft' e 'omg' sono nomi di proprietà mentre, null e null sono i valori delle proprietà.

È equivalente a:

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

Consulta la documentazione di mozilla sui letterali degli oggetti: http: //developer.mozilla. org / en / Core_JavaScript_1.5_Guide: letterali # Object_Literals

Spiegazione da " Voglio una matrice associativa in Javascript " punto di vista (che è ciò che in molti casi i letterali oggetto finiscono per essere utilizzati)

Da " Mastering di array Javascript "

Un array associativo è un array che utilizza una stringa anziché un numero come indice.

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 non ha e non supporta array associativi. Tuttavia & # 8230; Tutti gli array in Javascript sono oggetti e la sintassi degli oggetti Javascript fornisce un'emulazione di base di un array associativo. Per questo motivo il codice di esempio sopra funzionerà effettivamente. Tieni presente che questo non è un array reale e presenta insidie ??reali se provi a usarlo. L'elemento "person" nell'esempio diventa parte delle proprietà e dei metodi dell'oggetto Array, proprio come .length, .sort (), .splice () e tutte le altre proprietà e metodi incorporati.

Puoi scorrere tra le proprietà di un oggetto con il seguente loop & # 8230;

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

Nell'esempio sopra, associativeArray.length sarà zero perché in realtà non abbiamo inserito nulla nell'array, ma nell'oggetto associativeArray. associativeArray [0] non sarà definito.

Il loop nell'esempio sopra raccoglierà anche tutti i metodi, le proprietà e i prototipi che sono stati aggiunti all'array e non solo i tuoi dati. Un sacco di problemi che le persone hanno con la libreria Prototype è che i loro array associativi si rompono perché Prototype aggiunge alcune utili funzioni Prototype all'oggetto Array e per i cicli i in x prende quei metodi aggiuntivi. Questo è il pitfal dell'uso di array / oggetti come array associativo di un povero.

Come esempio finale, il codice precedente funzionerà indipendentemente dal fatto che tu definisca associativeArray come un array ([]), un oggetto ({}), un'espressione regolare (//), una stringa (" "), o qualsiasi altro oggetto Javascript.

La linea di fondo è - non tentare di usare array associativi, codice per quello che sono - proprietà degli oggetti, non array.

È un oggetto letterale (o, a volte, un oggetto vaniglia nelle librerie con classi hash).

Stessa cosa di:

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

Questo è un oggetto letterale. È effettivamente equivalente al seguente:

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

Credo che sia un oggetto con 2 proprietà, WTF e OMG.

potresti dire

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

controlla JSON.ORG

Questo codice:

var something = {wtf:null}

Ha lo stesso effetto di:

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

O per verbosità inutile:

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

Ed è utile ricordare che l'ultima riga è la stessa di

something["wtf"]=null;

Quindi puoi usare:

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

Questo è un esempio di istanza di oggetti JavaScript incorporata.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top