1
0
mirror of https://github.com/ruanyf/es6tutorial.git synced 2025-05-24 10:22:23 +00:00

docs(object): edit 简洁表示法

This commit is contained in:
ruanyf 2019-09-07 13:19:15 +08:00
parent 8870871023
commit 3baba14fbe

View File

@ -4,7 +4,7 @@
## 属性的简洁表示法
ES6 允许直接写入变量和函数,作为对象的属性和方法。这样的书写更加简洁。
ES6 允许在大括号里面,直接写入变量和函数,作为对象的属性和方法。这样的书写更加简洁。
```javascript
const foo = 'bar';
@ -15,7 +15,7 @@ baz // {foo: "bar"}
const baz = {foo: foo};
```
上面代码表明ES6 允许在对象之中,直接写变量。这时,属性名为变量名, 属性值为变量的值。下面是另一个例子。
上面代码中,变量`foo`直接写在大括号里面。这时,属性名就是变量名, 属性值就是变量值。下面是另一个例子。
```javascript
function f(x, y) {
@ -125,31 +125,24 @@ const cart = {
}
```
注意,简洁写法的属性名总是字符串,这会导致一些看上去比较奇怪的结果
简洁写法在打印对象时也很有用
```javascript
const obj = {
class () {}
let user = {
name: 'test'
};
// 等同于
var obj = {
'class': function() {}
let foo = {
bar: 'baz'
};
console.log(user, foo)
// {name: "test"} {bar: "baz"}
console.log({user, foo})
// {user: {name: "test"}, foo: {bar: "baz"}}
```
上面代码中,`class`是字符串,所以不会因为它属于关键字,而导致语法解析报错。
如果某个方法的值是一个 Generator 函数,前面需要加上星号。
```javascript
const obj = {
* m() {
yield 'hello world';
}
};
```
上面代码中,`console.log`直接输出`user``foo`两个对象时,就是两组键值对,可能会混淆。把它们放在大括号里面输出,就变成了对象的简洁表示法,每组键值对前面会打印对象名,这样就比较清晰了。
## 属性名表达式