JavaScript Nomi di proprietà dinamici / variabili


Esempio

A volte il nome della proprietà deve essere memorizzato in una variabile. In questo esempio, chiediamo all'utente quale parola deve essere cercata e quindi fornire il risultato da un oggetto che ho chiamato 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)

Nota come stiamo usando la notazione della parentesi [] per guardare la variabile chiamata word ; se dovessimo usare il tradizionale . notazione, quindi prenderebbe il valore letteralmente, quindi:

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)

È anche possibile scrivere valori letterali con la notazione [] sostituendo la word variabile con una stringa 'apple' . Vedi [Proprietà con caratteri speciali o parole riservate] esempio.


Puoi anche impostare proprietà dinamiche con la sintassi della parentesi:

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

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

Fa lo stesso di:

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