Object 对象扩展
- 对象字面量扩展提供了一些简洁的语法来定义对象属性和方 法
属性扩展
1. 计算属性
- 计算属性允许你使用表达式作为属性名
let propName = 'age';
let person = {
name: 'Alice',
[propName]: 30
};
logd(JSON.stringify(person)) // 输出: { name: 'Alice', age: 30 }
2. 简写属性
- 如果属性名和变量名相同,可以使用简写语法
let name = 'Alice';
let age = 30;
let person = { name, age };
logd(JSON.stringify(person)) // 输出: { name: 'Alice', age: 30 }
3. 简写方法
- 在对象字面量中定义方法时,可以省略
function
关键字
let person = {
name: 'Alice',
greet() {
return `Hello, ${this.name}!`;
}
};
logd(person.greet()); // 输出: Hello, Alice!
4. 字符串键简写方法
- 即使方法名是字符串,也可以使用简写语法
let person = {
name: 'Alice',
'greet'() {
return `Hello, ${this.name}!`;
}
};
logd(person.greet()); // 输出: Hello, Alice!
5. 计算简写方法
- 可以使用计算属性名来定义方法
let methodName = 'greet';
let person = {
name: 'Alice',
[methodName]() {
return `Hello, ${this.name}!`;
}
};
logd(person.greet()); // 输出: Hello, Alice!
6. 计算访问器
- 可以使用计算属性名来定义
getter
和setter
let propName = 'age';
let person = {
name: 'Alice',
_age: 30,
get [propName]() {
return this._age;
},
set [propName](value) {
this._age = value;
}
};
logd(person.age); // 输出: 30
person.age = 31;
logd(person.age); // 输出: 31
方法扩展
1. Object.values
Object.values
方法返回一个数组,包含对象自身可枚举属性的值
let obj = { a: 1, b: 2, c: 3 };
let values = Object.values(obj);
logd(values);
// EC输出: 1, 2, 3
logd(JSON.stringify(values))
// 实际内容: [1, 2, 3]
2. Object.entries
Object.entries
方法返回一个数组,包含对象自身可枚举属性的键值对数组
let obj = { a: 1, b: 2, c: 3 };
let entries = Object.entries(obj);
logd(entries);
// EC输出: a,1,b,2,c,3
logd(JSON.stringify(entries))
// 实际内容: [['a', 1], ['b', 2], ['c', 3]]