访问对象属性有两种不同的表示法
- 点表示法:myObj.prop1
- 方括号表示法:myObj [“ prop1”]
点表示法快速简便,但是您必须显式使用实际的属性名称。没有替代,变量等。
括号符号是开放式的。它使用一个字符串,但是您可以使用任何合法的js代码生成该字符串。您可以将字符串指定为文字字符串(尽管在这种情况下,点符号会更容易阅读)或使用变量或以某种方式进行计算。
因此,所有这些都将名为prop1的myObj属性设置为值Hello:
// quick easy-on-the-eye dot notation
myObj.prop1 = "Hello";
// brackets+literal
myObj["prop1"] = "Hello";
// using a variable
var x = "prop1";
myObj[x] = "Hello";
// calculate the accessor string in some weird way
var numList = [0,1,2];
myObj[ "prop" + numList[1] ] = "Hello";
陷阱:
myObj.[xxxx] = "Hello"; // wrong: mixed notations, syntax fail
myObj[prop1] = "Hello"; // wrong: this expects a variable called prop1
tl; dnr:如果要计算或引用密钥,则必须使用方括号表示法。如果您明确使用密钥,则对简单的清晰代码使用点表示法。
注意:还有其他一些好的和正确的答案,但是我个人发现它们有点简短,这是由于对JS即时的古怪性的不熟悉。这对某些人可能有用。