ES6中的super
时间: 2024-09-08 07:04:07 浏览: 42
ES6(ECMAScript 2015)引入了新的语法特性,其中`super`关键字主要用于构造函数和原型链中的方法调用。以下是`super`的主要用途:
1. **构造函数中的使用**:当你在一个子类的构造函数中需要先调用父类的构造函数时,可以使用`super()`。这是为了初始化父类的属性或执行必要的设置。如果直接在子类构造函数的第一行调用,它会自动调用父类的构造函数。
```javascript
class Parent {
constructor(name) {
this.name = name;
}
}
class Child extends Parent {
constructor(age) {
super('Alice'); // 先调用父类构造函数传入 'Alice'
this.age = age;
}
}
```
2. **访问父类方法和属性**:`super`也可以用于在子类方法中调用父类的方法。例如,在原型链上查找方法:
```javascript
class Parent {
sayHello() {
console.log('Hello from parent');
}
}
class Child extends Parent {
sayHello() { // 覆盖父类方法,但仍可通过 super.call(this) 或 super.sayHello() 访问
super.sayHello(); // 输出 'Hello from parent'
}
}
```
3. **避免`this`指向错误**:在子类的构造函数或成员方法中,如果没有明确地使用`this`,`super`可以帮助你准确指向正确的上下文。