javascript点与方括号区别

成员访问运算符——点“.”与计算机成员访问符——中括号“[ ]”在使用中有很多相同点,同时也存在很多不同之处。

点运算符之后书写的属性名为标志符,中括号运算符后书写的属性名为字符串。

点运算符用起来更为简洁,中括号运算符通用性更强。

中括号运算符能代替点运算符,但是点运算符不能代替中括号运算符。
1. 中括号“[ ]”能以变量当属性名,点“.”不行。
const obj = {};
let foo = "bar";
obj.foo = 123;
obj[foo] = 456;
// 输出的obj为{foo: 123, bar: 456};
2. 中括号“[ ]”能用数字或数学表达式当属性名,点“.”不行。
const obj = {};
obj.1 = "foo"; // 报错
obj[1] = "foo"; // obj[1]与obj["1"]是相同的
obj[5-3] = "bar";
// 输出的obj为{1: "foo", 2: "bar"}
3. 中括号“[ ]”能以js关键字、保留字当属性名,点“.”不行。
const obj = {};
obj.Symbol() = 8; // 报错
obj[Symbol()] = 9;
// 输出的obj为{Symbol(): 9}