JS noob在这里。如果我有一个字符串,我如何从与字符串同名的对象中调用属性?
var carrot = {
'vitaminA': 150,
'vitaminC': 100
};
var cucumber = {
'vitaminA': 10,
'vitaminC': 12
};
var vegetable = 'cucumber'
alert(vegetable.vitaminC) // this doesn't work
注意:这是我正在处理的问题的简化版本,因此我不能简单地说警告(cucumber.vitaminC) - 我必须根据字符串操作对象
答案 0 :(得分:3)
你可以这样:
window[vegetable].vitaminC
但我强烈建议将这些人包含在一个不是全局对象的对象中window
:
var vegetables = {
cucumber : {
vitaminA: 10,
vitaminC: 12
},
carrot : {
vitaminA: 150,
vitaminC: 100
}
};
var vegetable = 'cucumber';
alert(vegetables[vegetable].vitaminC);
答案 1 :(得分:2)
如果您知道范围,则可以执行此操作。如果范围是全局的,您可以像这样访问它:
var vegetable = window['cucumber'];
alert(vegetable.vitaminC);
答案 2 :(得分:0)
我会稍微改变你的结构,使你的对象脱离全局范围。您只需添加一个新对象来包含蔬菜即可实现此目的:
var vegetables = {
carrot: {
'vitaminA': 150,
'vitaminC': 100
},
cucumber: {
'vitaminA': 10,
'vitaminC': 12
}
};
然后您可以使用[]
表示法按名称(使用字符串)访问您的媒体资源:
vegetables['cucumber'].vitaminC; // 12
或者
vegetables['cucumber']['vitaminC']; // 12