with span javascript object-literal

javascript - span - jquery selector innertext



¿Qué es esto en JavaScript? (8)

var something = { wtf: null, omg: null };

Mi conocimiento de JavaScript todavía es terriblemente irregular desde la última vez que lo programé, pero creo que ya aprendí la mayor parte. Excepto por esto. No recuerdo haber visto esto antes. ¿Qué es? ¿Y dónde puedo obtener más información al respecto?


Creo que es un objeto con 2 propiedades, WTF y OMG.

tu puedes decir

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

echa un vistazo a JSON.ORG


Es un objeto literal (o, a veces, un objeto vainilla en bibliotecas con clases Hash).

Lo mismo que:

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


Este código:

var something = {wtf:null}

Tiene el mismo efecto que:

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

O para verbosidad innecesaria:

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

Y es útil recordar que la última línea es la misma que

something["wtf"]=null;

Entonces puedes usar:

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


Este es un objeto literal. Es efectivamente equivalente a lo siguiente:

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



Es un objeto literal con dos propiedades. Por lo general, así es como la gente crea matrices asociativas o hash porque JS no admite de forma nativa esa estructura de datos. Aunque tenga en cuenta que todavía es un objeto completamente desarrollado, puede incluso agregar funciones como propiedades:

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

Y puede recorrer las propiedades usando un ciclo for:

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


Este es un ejemplo de creación de instancias de objetos JavaScript en línea.


Explicación desde el punto de vista "Quiero una matriz asociativa en Javascript" (que es en lo que en muchos casos se usan los literales de objeto)

De "Mastering Javascript Arrays"

Una matriz asociativa es una matriz que utiliza una cadena en lugar de un número como índice.

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 no tiene, y no admite matrices asociativas. Sin embargo ... Todas las matrices en Javascript son objetos y la sintaxis del objeto de Javascript proporciona una emulación básica de una matriz asociativa. Por esta razón, el código de ejemplo anterior funcionará realmente. Tenga en cuenta que esta no es una matriz real y tiene verdaderas dificultades si intenta usarla. El elemento ''persona'' en el ejemplo se convierte en parte de las propiedades y métodos del objeto Array, al igual que .length, .sort (), .splice () y todas las demás propiedades y métodos incorporados.

Puede recorrer las propiedades de un objeto con el siguiente ciclo ...

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

En el ejemplo anterior, asociativeArray.length será cero porque en realidad no pusimos nada en la matriz, lo colocamos en el objeto de Array asociativo. asociativeArray [0] no estará definido.

El ciclo del ejemplo anterior también recogerá los métodos, propiedades y prototipos que se hayan agregado a la matriz y no solo sus datos. Muchos de los problemas que tienen las personas con la biblioteca de Prototype es que sus matrices asociativas se rompen porque Prototype agrega algunas funciones de Prototype útiles al objeto Array y para i en bucles x recogen esos métodos adicionales. Esa es la oportunidad de usar Matriz / objetos como matriz asociativa de un hombre pobre.

Como último ejemplo, el código anterior funcionará independientemente de si define asociativeArray como una matriz ([]), un objeto ({}), una expresión regular (//), cadena ("") o cualquier otro objeto de Javascript .

La conclusión es - no intente utilizar matrices asociativas, codifique por lo que son - propiedades del objeto, no matrices.