javascript super关键字
时间: 2024-12-26 19:26:11 浏览: 0
### JavaScript 中 `super` 关键字的使用
#### 调用父类构造函数
当在一个派生类(子类)的构造函数中使用 `super()` 时,这表示要调用其基类(父类)的构造函数。这是创建子类实例所必需的操作,在此之前不能访问 `this` 或者其他任何可能依赖于新对象的方法。
```javascript
class Animal {
constructor(name) {
this.name = name;
}
}
class Dog extends Animal {
constructor(name, breed) {
super(name); // 调用了Animal的构造器并传递参数name给它
this.breed = breed;
}
}
```
#### 访问父类成员方法
除了用于初始化之外,`super` 还可以用来引用父类定义的方法。通过这种方式可以在不覆盖原有功能的情况下扩展行为,即先执行父级版本再添加额外逻辑。
```javascript
const parent = {
sayHello() {
return 'Hello from Parent';
}
};
const child = {
__proto__: parent,
sayHello() {
return `${super.sayHello()} and Hello from Child`;
}
};
console.log(child.sayHello()); // "Hello from Parent and Hello from Child"[^3]
```
#### 对象字面量中的应用
对于基于对象字面量构建的对象来说,如果这些对象之间存在继承关系,则可以通过设置原型的方式来实现这一点,并且同样能够利用 `super` 来访问上层对象的方法。
```javascript
const parentObj = {
greet() {
return 'Hi!';
}
};
const childObj = {
...parentObj,
greet() {
return `${super.greet()}, how are you?`;
}
};
Object.setPrototypeOf(childObj, parentObj);
console.log(childObj.greet()); // Hi!, how are you?
```
阅读全文