JavaScript Nombres de propiedades dinámicas / variables


Ejemplo

A veces, el nombre de la propiedad debe almacenarse en una variable. En este ejemplo, le preguntamos al usuario qué palabra debe buscarse y luego proporcionamos el resultado de un objeto que he llamado dictionary .

var dictionary = {
    lettuce: 'a veggie',
    banana: 'a fruit',
    tomato: 'it depends on who you ask',
    apple: 'a fruit',
    Apple: 'Steve Jobs rocks!' // properties are case-sensitive
}

var word = prompt('What word would you like to look up today?')
var definition = dictionary[word]
alert(word + '\n\n' + definition)

Observe cómo estamos usando la notación de corchetes [] para ver la variable denominada word ; Si tuviéramos que utilizar el tradicional . notación, entonces tomaría el valor literalmente, por lo tanto:

console.log(dictionary.word)  // doesn't work because word is taken literally and dictionary has no field named `word`
console.log(dictionary.apple) // it works! because apple is taken literally

console.log(dictionary[word]) // it works! because word is a variable, and the user perfectly typed in one of the words from our dictionary when prompted
console.log(dictionary[apple]) // error! apple is not defined (as a variable)

También puede escribir valores literales con notación [] reemplazando la word variable con una cadena 'apple' . Ver el ejemplo de [Propiedades con caracteres especiales o palabras reservadas].


También puede establecer propiedades dinámicas con la sintaxis de corchete:

var property="test";
var obj={
 [property]=1;
};

console.log(obj.test);//1

Hace lo mismo que:

var property="test";
var obj={};
obj[property]=1;