var person = {name: "Johen", address: "USA"}
以下两种访问人员属性的方式有区别吗?是否有任何性能影响?
var name = person.name
var address = person["address"]
谢谢!
发布于 2011-11-02 17:18:38
它们是相等的。但是,如果键包含字符串之外不允许的字符,则需要使用数组语法。如果您想使用动态密钥,这一点同样适用--很久以前,人们习惯于使用像foo = eval('obj.' + propname);
这样的杂乱无章的工具,但foo = obj[propname];
当然要好得多
IMO的obj.property
语法要好得多,因为它更短更自然。
发布于 2011-11-02 17:31:18
对象属性的“点”和“方括号”访问方法在ECMA-262第11.2.1节中进行了描述。只有在名称符合标识符允许的字符规则的情况下,才能使用点访问。
在从表达式计算名称时,可以使用方括号表示法。它本质上是说“计算表达式并将结果用作属性名”,因此您可以执行以下操作:
function foo() {return 'foo'}
var obj = {};
obj[foo()] = 'foo';
数组属性的访问方式与对象属性完全相同-数组只是具有特殊长度属性的对象。
https://stackoverflow.com/questions/7977953
复制相似问题