新增的基本新特性
1 属性的简洁表示法
直接写入变量和函数,作为对象的属性和方法(变量或函数名会作为属性名,其值是对应属性的值):
变量:
const foo = 'bar';
const baz = {foo};
baz // {foo: "bar"}
// 等同于
const baz = {foo: foo};
函数:
const o = {
method() {
return "Hello!";
}
};
// 等同于
const o = {
method: function() {
return "Hello!";
}
};
2 属性名表达式
ES5 定义对象的属性,有两种方法。
// 方法一:直接用标识符作为属性名,属性名定死
obj.foo = true;
// 方法二:用表达式作属性名(属性名可为变量),要将表达式放在方括号之内
obj['a' + 'bc'] = 123;
但如果使用字面量方式定义对象(使用大括号),在 ES5 中只能使用方法一,表达式里写表达式的方法无法用,也就不能指定属性名为变量。
var obj = {
foo: true,
abc: 123
};
ES6 允许字面量定义对象时,用方法二(表达式)作为对象的属性名,即把表达式放在方括号内。
let propKey = 'foo';
let obj = {
[propKey]: true,
['a' + 'bc']: 123
};
这就是ES6的属性名表达式。