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