Possible Duplicate:
JavaScript property access: dot notation vs. brackets?语法差异
让我们考虑我有一个对象:
var o = { x:1, y:2 };
的区别是什么,当我访问这样的属性:
o.x
与此相比, :
o["x"]
Possible Duplicate:
JavaScript property access: dot notation vs. brackets?语法差异
让我们考虑我有一个对象:
var o = { x:1, y:2 };
的区别是什么,当我访问这样的属性:
o.x
与此相比, :
o["x"]
那些被称为Member Operators,并没有在该链路上他们信息的好一点。
唯一真正的区别是,括号符号让你不服从变量的命名规则,做这样的事情:
o["3213adascas #@%!"] = 5;
尽管下面显然是一个语法错误:
o.3213adascas #@%! = 5;
此外,由于括号表示法需要一个字符串,您可以使用它的变量:
var o = { x:1, y:2 };
var member = 'y';
console.log(o[member]); // Outputs 2
o.x
实际上只是o["x"]
的语法糖。他们做同样的事情。但是,方括号表示法允许您例如使用可变作为属性名的值来访问:
var someString = "x";
o[someString];
除了这一点,如果属性名称是不是一个有效标识符,方括号必须使用:
var myObj = {
"space property": 1
};
myObj["space property"];
没有区别 - 同样的事情......但并实现与空间/晦涩字符键:
o['something here'] = "test";
将例如工作,但是这不会:
o.something here = "test";
的方括号有一个优点。您可以动态设置属性。
From JavaScript Garden
var foo = {name: 'Kitten'} foo.name; // kitten foo['name']; // kitten var get = 'name'; foo[get]; // kitten foo.1234; // SyntaxError foo['1234']; // works
Both notations are identical in their workings, with the only difference being that the square bracket notation allows for dynamic setting of properties, as well as the use of property names that would otherwise lead to a syntax error.
这两个完全一样的东西。然而,括号表示法(o["x"]
),可以做两件事情,你不能用点号(o.x
)做:
访问属性与任意字符串。例如,o["function"]
和o["432 %^$ ==="]
是有效的语法,但o.function
无效,因为function
是关键字,并且o.432 %^$ ===
无效,因为它构成语法错误。
设置对象的动态属性。您可以使用括号表示法做var str = "prop";
并访问o[str]
。