extends 一次性静态建立两条独立原型链:实例链(Child.prototype.__proto__→Parent.prototype)和静态链(Child.__proto__→Parent),constructor自动修正,super()是this初始化强制关卡,三类成员按对应链路继承。

extends 关键字不是“重构”prototype链,而是由 JavaScript 引擎在 class 定义时**一次性、静态地建立两条独立但协同的原型链**——它不修改已有链,也不运行时重连,而是从定义那一刻就确立结构。
extends 建立的两条原型链各自独立
当你写 class Child extends Parent,引擎立即设置:
-
实例方法链:让
Child.prototype.__proto__指向Parent.prototype,确保new Child()能沿链访问父类原型上的方法 -
静态成员链:让
Child.__proto__指向Parent,使Child.staticMethod()可继承调用父类静态方法,且子类静态方法中可用super.staticMethod() - 这两条链互不影响:改
Child.prototype不动Child.__proto__,反之亦然
constructor 指针被自动修正,无需手动干预
子类原型对象的 constructor 属性默认指向 Child,不是 Parent。这是 extends 的内置保障:
- 即使
Parent.prototype.constructor === Parent,Child.prototype.constructor也始终是Child - 只有当你显式重赋
Child.prototype = ...(比如用Object.create(Parent.prototype))时,才需手动补上Child.prototype.constructor = Child - 否则
new Child()实例的constructor仍能正确识别为Child,instanceof判定也不会失效
super() 是 this 初始化的强制关卡,不是可选调用
在子类 constructor 中,super() 必须出现在第一行:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
立即学习“Java免费学习笔记(深入)”;
- 它不只是执行父构造函数逻辑,更是为子类实例绑定并初始化
this的内部状态 - 没调用
super()就访问this,会直接抛出ReferenceError - 之后才能安全添加子类专属属性,如
this.id = Date.now()
继承内容覆盖三类成员,全部走对应链路
extends 不仅继承实例方法,还统一处理:
-
实例属性与方法:通过实例方法链(
__proto__)查找 -
静态方法与属性:通过静态链(
__proto__)查找,Child.count或Child.doWork()都能继承自Parent -
get/set 访问器:定义在
Parent.prototype上,自然被Child.prototype继承,无需额外操作
不复杂但容易忽略

















