>[danger]ES6中继承的原理? ES6 中的继承是通过类与类之间的`extends`关键字以及`super`关键字来实现的。这种继承方式被称为基于类的继承。 基于类的继承在底层仍然使用了原型链的机制。当一个类通过 `extends` 关键字继承另一个类时,实际上是创建了一个新的构造函数,并将其原型对象指向被继承类的实例。 下面是一个简单的示例,演示了如何使用 `extends` 和 `super` 进行继承: ```javascript class Animal { constructor(name) { this.name = name; } eat() { console.log(`${this.name} is eating.`); } } class Dog extends Animal { constructor(name, breed) { super(name); this.breed = breed; } bark() { console.log(`Woof! My name is ${this.name}. I am a ${this.breed}.`); } } const dog = new Dog('Bobby', 'Golden Retriever'); dog.eat(); // 继承自父类 Animal 的方法 dog.bark(); // 子类 Dog 自己的方法 ``` 在上述示例中,`Dog` 类通过 `extends` 关键字继承了 `Animal` 类。在 `Dog` 的构造函数中,我们使用 `super()` 来调用父类 `Animal` 的构造函数,并传递相应的参数。这样可以确保在创建 `Dog` 实例时,父类的构造函数也会被执行。 继承后,`Dog` 类实例既可以调用自身的方法(例如 `bark()`),也可以调用父类 `Animal` 的方法(例如 `eat()`)。在 `Dog` 类中,我们可以通过 `this.name` 和 `this.breed` 分别访问自身的属性,以及通过 `super` 访问父类的属性和方法。 通过 `extends` 和 `super` 实现的继承机制,使得子类能够从父类继承属性和方法,并且可以对其进行扩展或重写。同时,父类的原型链上的其他祖先类的属性和方法也会被子类所继承。这样就实现了基于类的继承。