1. 属性的简洁表示法
ES6 允许直接写入变量和函数,作为对象的属性和方法。这样的书写更加简洁。
const age = 18
const person = {age}
console.log(person); // {age: 18}
除了属性简写,方法也可以简写。
const Person = {
sayHello() {
console.log('hello');
}
}
// 等同于
const Person = {
sayHello: function () {
console.log('hello');
}
}
因为简写写法的属性名始终是字符串,所以下面代码里的 class 因为是字符串,所以它不属于关键字,而导致解析错误。
const o = {
class() {}
}
// 等同于
const o = {
'class': function () { }
}
如果某个方法的值是一个 Generator 函数,前面需要加上 * 号。
const obj = {
* m() {
yield 'hello world'
}
}
2. 属性名表达式
在 ES5 中,使用字面量方式表达对象的时候,属性名是不能使用表达式作为属性名的。
var obj = {
foo: true,
abc: 123
}
而在 ES6 中,使用表达式作为属性名的行为将被允许。
var obj = {
foo: true,
['a' + 'bc']: 123
}
表达式同样可以用来定义方法名
var obj = {
['a' + 'bc']() {}
}
注意,属性名表达式如果是一个对象,默认情况下会自动将对象转为字符串[object Object]