【发布时间】:2012-09-26 18:09:54
【问题描述】:
JavaScript 为您提供了许多声明对象的方法。当您手头有大部分可用数据时,最方便的(在我看来)如下:
var person = {
name: 'John',
age: 23
}; // "object literal syntax"
这种语法的一个奇怪之处在于它与此相同:
var person = {
'name': 'John',
'age': 23
}; // "object literal syntax"
也就是说,您可以在属性名称中使用引号或省略它们。
将其与设置单个属性的工作方式进行比较时,您有两种选择:
person.birthday = "January 12"; // "dot syntax"
或
person['birthday'] = "January 12"; // "array syntax"
“点语法”仅在右操作数是实际属性名称时才有效。如果要使用变量作为属性名称,则必须使用“数组语法”,即:
var prop = "birthday";
person[prop] = "January 12";
现在,是否可以在“对象文字语法”中为属性名称使用变量?由于引用属性名称并不重要,因此似乎没有一种明显的方法可以在那里使用变量。我正在寻找这样的东西:
var prop = "birthday";
var person = {
name: 'John',
age: 23,
(prop): 'January 12'
};
这里我使用 (prop) 作为假想的语法来表示这是一个变量而不是文字字符串。
谢谢。
【问题讨论】:
-
我认为你必须坚持使用数组语法。也许 eval('person.'+prop+' = "January 12"') 可以解决问题,但我不认为这是最优解
-
@PhilippeBoissonneault -- 确认! 不需要 eval...请不要在这种情况下使用它。
-
您正在寻找相当于 PHP 变量的变量:
$foo = bar; $bar = '123'; echo $$foo;// actually displays '123'
标签: javascript object syntax