以下是一个简单的类继承的例子:
class Animal {
constructor(name) {
this.name = name;
}
speak() {
console.log(`${this.name} makes a sound.`);
}
}
class Dog extends Animal {
constructor(name, breed) {
// 调用父类的构造函数
super(name);
this.breed = breed;
}
// 覆盖父类的方法
speak() {
console.log(`${this.name} barks.`);
}
fetch() {
console.log(`${this.name} fetches the ball.`);
}
}
const myDog = new Dog('Buddy', 'Golden Retriever');
myDog.speak(); // 输出: Buddy barks.
myDog.fetch(); // 输出: Buddy fetches the ball.
在这个例子中,Dog 类继承自 Animal 类。子类 Dog 在构造函数中使用 super(name) 调用父类 Animal 的构造函数,以获取共享的属性。然后,子类 Dog 可以覆盖父类的方法(例如,speak),也可以添加新的方法(例如,fetch)。
值得注意的是,子类在调用 super 之前不能使用 this 关键字,因为 super 负责初始化父类的属性,确保子类在使用之前拥有正确的父类状态。
继承还可以用于扩展内置对象的功能,例如扩展 Array 类:
class MyArray extends Array {
constructor(...args) {
super(...args);
}
// 添加新方法
sum() {
return this.reduce((total, current) => total + current, 0);
}
}
const myNumbers = new MyArray(1, 2, 3, 4, 5);
console.log(myNumbers.sum()); // 输出: 15
在这个例子中,MyArray 继承自内置的 Array 类,并添加了一个新的方法 sum,用于计算数组中所有元素的和。
转载请注明出处:http://www.zyzy.cn/article/detail/4682/ES6