JavaScript 原型链继承:不使用 extends 实现继承
在 JavaScript 中,除了使用 extends 关键字实现继承以外,还可以通过 Object.setPrototypeOf() 方法来实现原型链继承。这种方式在某些情况下可能比使用 extends 更加灵活。
实现步骤:
- 定义父类:
class Parent {
constructor() {}
methodA() {}
methodB() {}
}
const parent = new Parent();
- 定义子类:
class Child {
constructor() {
Object.setPrototypeOf(this, parent);
}
methodC() {}
}
const child = new Child();
在 Child 类的构造函数中,使用 Object.setPrototypeOf(this, parent) 将 Child 的原型设置为 Parent 的实例。这样,Child 类就可以继承 Parent 类原型链上的方法。
- 调用方法:
child.methodA();
child.methodB();
child.methodC();
现在可以创建 Child 的实例 child,并调用继承自 Parent 类的方法 methodA()、methodB(),以及 Child 类自己的方法 methodC()。
代码示例:
class Parent {
constructor() {}
methodA() {
console.log('Parent methodA');
}
methodB() {
console.log('Parent methodB');
}
}
const parent = new Parent();
class Child {
constructor() {
Object.setPrototypeOf(this, parent);
}
methodC() {
console.log('Child methodC');
}
}
const child = new Child();
child.methodA(); // 输出: Parent methodA
child.methodB(); // 输出: Parent methodB
child.methodC(); // 输出: Child methodC
通过这种方式,我们成功地实现了原型链继承,并让子类 Child 继承了父类 Parent 的方法。
原文地址: https://www.cveoy.top/t/topic/o0Cl 著作权归作者所有。请勿转载和采集!