javascript - 访问和创建对象属性的首选方式?

标签 javascript

在 Javascript 中,您可以通过以下方式创建具有属性 name 的对象:

var person = { name: "Tucker" };

但也是这样:

var person = { "name": "Tucker" };

这两个是等价的吗?首选哪一个?

访问属性也是如此:

person["name"] = "Dale";

对比

person[name] = "Dale";

Eloquent JavaScript中,作者说括号之间的部分可以是任何表达式。它被转换为字符串以确定它所引用的属性名称。

所以,我想直接在括号之间放置一个字符串被认为是最佳实践。

最后但同样重要的是,可以使用点表示法访问属性:

person.name = "Dale";

如果该属性是一个有效的变量名。在看似更灵活的括号表示法上使用这种表示法真的有意义吗?

最佳答案

它们是一样的,唯一的区别是如果你的键是保留关键字,你需要引号:

var person = { name: "Tucker" };
var person = { "name": "Tucker" };
var person = { "for": "Tucker" }; //Need quotes here

访问时,同样的规则适用

person["name"] = "Dale"; //Sets the person object's name attribute to "Dale", the brackets are needed for variables or expressions.
person.name = "Dale";    //Same operation, different syntax
person[name] = "Dale";   //Sets the attribute equivalent to the value of the variable name, not necessarily "name"

Does it actually makes sense to use this notation over the seemingly more flexible bracket notation?

这完全取决于您或决定项目编码标准的任何人。点符号更简单,让人联想到 Java/C/C++(如果您喜欢那种东西),正如您所指出的,括号更灵活。

关于javascript - 访问和创建对象属性的首选方式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8361859/

相关文章:

javascript - 为什么最近的不起作用?

javascript - 如何确定事件是否从滚动条触发

javascript - 在加载时执行匿名函数,然后使用 setTimeout 每 30 秒再次执行一次

javascript - 从重定向标签返回 - React Router

javascript - 使用ajax传递php变量

javascript - 在 IE 11 中显示二进制文件 (pdf)

javascript - 将输入值存储在数组中,获取重复的控制台日志

javascript - nodejs http请求卡住

javascript - 捕捉 Android/iPhone 触摸 Action 的框架? - Javascript

javascript - typescript 中的 forEach 函数