在Javascript中,您可以通过以下方式创建具有属性name
的对象:
var person = { name: "Tucker" };
但也是这样:
var person = { "name": "Tucker" };
这两个相同吗?哪一个更受欢迎?
访问房产也是如此:
person["name"] = "Dale";
VS
person[name] = "Dale";
在Eloquent JavaScript
中,作者说The part between the brackets can be any expression. It is converted to a string to determine the property name it refers to.
。
所以,我想直接在括号之间放一个字符串将被视为最佳做法。
最后但并非最不重要的是,可以使用点表示法访问属性:
person.name = "Dale";
如果属性是有效的变量名称。将这种表示法用于看似更灵活的括号表示法是否真的有意义?
答案 0 :(得分:2)
这些是相同的,唯一的区别是如果你的密钥是保留关键字,你需要引号:
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"
在看似更灵活的括号表示法上使用这种表示法是否真的有意义?
完全取决于您,或者决定您项目编码标准的人。点符号更简单,让人联想到Java / C / C ++(如果你是那种东西)和括号,如你所说,更灵活。
答案 1 :(得分:2)
没有'最佳方式',这实际上取决于你正在做什么。
var person = { name: "Tucker" };
很好,但如果'name'实际上是'带空格的名字',那么你需要:
var person = { "name with a space": "Tucker" };
要访问属性,除非您在 for ... in 循环中,否则我会建议使用点符号:
person.name
当然你做不到:
person."name with a space"
所以:
person["name with a space"]