ES6入门之对象的扩展
2024-02-02 03:12:25
## ES6 对象的扩展
ES6 对 JavaScript 对象进行了扩展,使之更加灵活和强大。这些扩展包括:
- 属性的简洁表示法 :使用简短的语法来定义对象的属性。
- 属性名表达式 :允许在定义对象属性时使用表达式。
- 方法的 name 属性 :允许在方法定义中指定方法的名称。
- 属性的可枚举性和遍历 :允许控制对象的属性是否可枚举以及如何遍历对象。
- **super ** :允许子类访问父类的属性和方法。
## 属性的简洁表示法
在 ES6 中,可以使用简短的语法来定义对象的属性。例如,以下代码定义了一个名为 name
的属性,其值为 "John Doe"
:
const person = {
name: "John Doe",
};
这种简洁的表示法可以用于定义任何类型的属性,包括数据属性、访问器属性和生成器方法。
## 属性名表达式
在 ES6 中,可以在定义对象属性时使用表达式。例如,以下代码定义了一个名为 fullName
的属性,其值为 firstName
和 lastName
的连接:
const person = {
firstName: "John",
lastName: "Doe",
fullName: `${firstName} ${lastName}`,
};
属性名表达式可以用于定义任何类型的属性,包括数据属性、访问器属性和生成器方法。
## 方法的 name 属性
在 ES6 中,可以在方法定义中指定方法的名称。例如,以下代码定义了一个名为 greet
的方法,其名称为 "sayHello"
:
const person = {
greet: function sayHello() {
console.log("Hello, world!");
},
};
方法的 name 属性可以用于在对象上查找方法或在对象上遍历方法。
## 属性的可枚举性和遍历
在 ES6 中,可以使用 Object.defineProperty()
方法来控制对象的属性是否可枚举以及如何遍历对象。例如,以下代码定义了一个名为 name
的属性,使其不可枚举:
const person = {
name: "John Doe",
};
Object.defineProperty(person, "name", {
enumerable: false,
});
现在,当使用 for...in
循环遍历对象时,name
属性将不会被遍历。
## super 关键字
在 ES6 中,可以使用 super
关键字来访问父类的属性和方法。例如,以下代码定义了一个名为 Child
的类,它继承自 Parent
类:
class Parent {
constructor(name) {
this.name = name;
}
greet() {
console.log(`Hello, my name is ${this.name}.`);
}
}
class Child extends Parent {
constructor(name, age) {
super(name);
this.age = age;
}
greet() {
super.greet();
console.log(`I am ${this.age} years old.`);
}
}
const child = new Child("John Doe", 20);
child.greet();
输出:
Hello, my name is John Doe.
I am 20 years old.
super
关键字可以用于访问父类的任何属性或方法,包括私有属性和方法。
## 结语
ES6 中的对象扩展使 JavaScript 对象更加灵活和强大。这些扩展可以用于创建更简洁、更易于维护的代码。