為什么要用[ ]去包裹變量
計(jì)算屬性名
在JavaScript
中驶臊,我們定義屬性時(shí),有兩種方式:中括號(hào)[]
或.
的方式:
// 方法一
obj.foo = true;
// 方法二
obj['a'+'bc'] = 123;
.
運(yùn)算符具有很大的局限性,比如first name
這種屬性只能通過中括號(hào)的方式來定義。中括號(hào)的方式允許我們使用變量或者在使用標(biāo)識(shí)符時(shí)會(huì)導(dǎo)致語法錯(cuò)誤的字符串直接量來定義屬性橄登。例如:
var person = {},
lastName = "last name";
person["first name"] = "Nicholas";
person[lastName] = "Zakas";
console.log(person["first name"]); // "Nicholas"
console.log(person[lastName]); // "Zakas"
這兩種方式只能通過中括號(hào)的方式來定義的抓歼。在ES5
中,你可以在對(duì)象直接量中使用字符串直接量作為屬性拢锹,例如:
var person = {
"first name": "Nicholas"
};
console.log(person["first name"]); // "Nicholas"
但是當(dāng)我們的屬性名==存在一個(gè)==變量中或者需要計(jì)算時(shí)谣妻,使用對(duì)象直接量是無法定義屬性的。但是在ES6
中計(jì)算屬性名語法卒稳,同樣是通過中括號(hào)的方式蹋半。例如:
var lastName = "last name";
var person = {
"first name": "Nicholas",
[lastName]: "Zakas"
};
console.log(person["first name"]); // "Nicholas"
console.log(person[lastName]); // "Zakas"
在對(duì)象直接量中的中括號(hào)表明屬性名是需要被計(jì)算的,它的內(nèi)容被計(jì)算為字符串