JavaScript 对象声明语法——变量名作为属性

标签 javascript object syntax

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) 作为虚构语法来表示这是一个变量而不是文字字符串。

谢谢。

最佳答案

不,这行不通,这就是为什么如果您动态设置属性名称,建议并使用类似数组的表示法。

var k='propertyname';
object[k]="value";

这在无法使用点符号从 vatiable 设置索引或属性名称时有效。

关于JavaScript 对象声明语法——变量名作为属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12607845/

相关文章:

javascript - 将 meteor 启动脚本安装到主目录

javascript - 使用 POST 将动态 SPAN 值发送到 PHP 脚本

php - PHP 问题中的简单对象 [新手]

powershell - 什么是@”运算符?

ios - Xcode 6 - 语法高亮/完成不起作用

javascript - 如何在用户控制时禁用 <a onclick>

javascript - 取消粘附在屏幕底部的 div

javascript - 如何有效地将属性从一个对象复制到另一个对象?

c# - 将 Dictionary<int, Object1> 转换为 Dictionary<int, Object2>

php - 在 php 中使用 echo 一行 if 语句