ES6的extends是对原型链的封装,子类实例是父类实例的增强版;需确保父类已定义、单继承、子类constructor中先调用super(),并可用super复用父级逻辑,通过instanceof和原型链验证继承有效性。

ES6 的 extends 关键字让继承变得直观、语义清晰,但“优雅”不只在于写得少,而在于逻辑稳固、复用合理、不易出错。核心是理解它不是新机制,而是对原型链的封装——子类实例本质是父类实例的增强版。
明确声明继承关系,一个 class 只继承一个父类
语法直接表达“是一种”的语义,比如 class Dog extends Animal 比手动改 prototype 更可读。注意几点:
- 父类必须已定义且为合法构造函数(不能是
undefined或null) - ES6 不支持多继承,一个子类只能
extends一个父类 - 若父类有
constructor,子类必须显式定义自己的constructor并调用super()
子类构造函数中必须先调用 super() 初始化 this
super() 不是可选项,它是创建 this 的前提。子类实例的 this 来自父类构造函数的返回值,子类只是后续加工。
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
- 错误写法:
this.breed = 'Golden'出现在super()前 → 报ReferenceError - 正确顺序:先
super(name)(参数需匹配父类构造签名),再设置子类专属属性,如this.breed = breed - 即使父类构造函数为空,也要写
super(),否则实例化失败
复用父级逻辑:用 super 调用方法,而非重写全部
覆盖方法时,不必抛弃原有行为。通过 super.methodName() 可在新逻辑中精准复用父实现。
立即学习“Java免费学习笔记(深入)”;
- 在实例方法中,
super.speak()指向父类原型上的同名方法 - ES2022+ 支持在静态方法中使用
super.staticMethod() - 常见模式:先
super.init()完成基础初始化,再执行子类特有逻辑或打日志
验证继承是否真正生效,避免“写了却没连上”
运行时检查能快速定位隐性问题:
-
instanceof:子类实例既是子类也是父类的实例,如dog instanceof Dog && dog instanceof Animal -
Object.getPrototypeOf(Child) === Parent:确认子类构造函数的原型指向父类 -
Child.prototype.__proto__ === Parent.prototype:验证实例方法是否从父类原型继承

















