ES6

为什么要用[ ]去包裹变量

计算属性名

JavaScript中,我们定义属性时,有两种方式:中括号[].的方式:

// 方法一
obj.foo = true;

// 方法二
obj['a'+'bc'] = 123;

.运算符具有很大的局限性,比如first name这种属性只能通过中括号的方式来定义。中括号的方式允许我们使用变量或者在使用标识符时会导致语法错误的字符串直接量来定义属性。例如:

var person = {},
    lastName = "last name";

person["first name"] = "Nicholas";
person[lastName] = "Zakas";

console.log(person["first name"]);      // "Nicholas"
console.log(person[lastName]);          // "Zakas"

这两种方式只能通过中括号的方式来定义的。在ES5中,你可以在对象直接量中使用字符串直接量作为属性,例如:

var person = {
    "first name": "Nicholas"
};

console.log(person["first name"]);      // "Nicholas"

但是当我们的属性名==存在一个==变量中或者需要计算时,使用对象直接量是无法定义属性的。但是在ES6中计算属性名语法,同样是通过中括号的方式。例如:

var lastName = "last name";

var person = {
    "first name": "Nicholas",
    [lastName]: "Zakas"
};

console.log(person["first name"]);      // "Nicholas"
console.log(person[lastName]);          // "Zakas"

在对象直接量中的中括号表明属性名是需要被计算的,它的内容被计算为字符串

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容