0

JS菜鸟在这里。如果我有一个字符串,如何从与字符串同名的对象中调用属性?

var carrot = {
    'vitaminA': 150,
    'vitaminC': 100
};

var cucumber = {
    'vitaminA': 10,
    'vitaminC': 12

};

var vegetable = 'cucumber'
alert(vegetable.vitaminC) // this doesn't work 

注意:这是我正在处理的问题的简化版本,所以我不能简单地说 alert(cucumber.vitaminC) -- 我必须根据字符串对对象进行操作

4

3 回答 3

3

你可以拥有它:

window[vegetable].vitaminC

但我强烈建议将这些人包含在一个不是全局对象的对象中window

var vegetables = {
  cucumber : {
    vitaminA: 10,
    vitaminC: 12
  },
  carrot : {
    vitaminA: 150,
    vitaminC: 100
  }
};

var vegetable = 'cucumber';
alert(vegetables[vegetable].vitaminC);
于 2013-04-08T21:04:05.633 回答
2

如果您知道范围,则可以执行此操作。如果范围是全局的,您可以像这样访问它:

var vegetable = window['cucumber'];
alert(vegetable.vitaminC);
于 2013-04-08T21:03:57.503 回答
0

我会稍微改变你的结构,让你的对象脱离全局范围。您可以通过简单地添加一个新对象来包含您的蔬菜来做到这一点:

var vegetables = {
    carrot: {
        'vitaminA': 150,
        'vitaminC': 100
    },
    cucumber: {
        'vitaminA': 10,
        'vitaminC': 12
    }
};

然后您可以使用[]符号按名称(使用字符串)访问您的属性:

vegetables['cucumber'].vitaminC; // 12

或者

vegetables['cucumber']['vitaminC']; // 12
于 2013-04-08T21:05:05.617 回答