成员访问运算符——点“.”与计算机成员访问符——中括号“[ ]”在使用中有很多相同点,同时也存在很多不同之处。
点运算符之后书写的属性名为标志符,中括号运算符后书写的属性名为字符串。
点运算符用起来更为简洁,中括号运算符通用性更强。
中括号运算符能代替点运算符,但是点运算符不能代替中括号运算符。
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}