JavaScript 动态/可变属性名称

示例

有时,属性名称需要存储到变量中。在此示例中,我们询问用户需要查找哪个词,然后提供来自我命名的对象的结果dictionary。

var dictionary = {
    lettuce: 'a veggie',
    banana: 'a fruit',
    tomato: 'it depends on who you ask',
    apple: 'a fruit',
    Apple: 'Steve Jobs rocks!' // 属性区分大小写
}

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

注意我们如何使用[]括号表示法来查看名为word;的变量。如果我们使用传统的.表示法,那么它将按字面值取值,因此:

console.log(dictionary.word)  // 不起作用,因为单词是按字面意义使用的,并且字典中没有名为“ word”的字段
console.log(dictionary.apple) //有用!因为苹果是字面上的意思

console.log(dictionary[word]) //有用!因为单词是一个变量,并且在出现提示时用户完美地输入了我们词典中的单词之一
console.log(dictionary[apple]) //错误!苹果未定义(作为变量)

您也可以[]通过将变量替换word为字符串来用表示法编写文字值'apple'。请参见[带有特殊字符或保留字的属性]示例。


您还可以使用方括号语法设置动态属性:

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

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

它与以下功能相同:

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