访问对象属性有两种不同的表示法
- 点符号: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 的即时古怪不太熟悉。这可能对某些人有用。