super 是 JavaScript 中的关键字语法引用,非对象;构造函数中 super() 调用父类构造函数并初始化 this,方法中 super.xxx 沿原型链查找父类成员,静态方法中 super 指向父类本身。

super 在 JavaScript class 中不是一个对象,而是一个**关键字语法引用**,它在不同上下文中指向不同的隐式绑定目标,其语义取决于调用位置和用途。
构造函数中 super() 的语义
在子类 constructor 中,super() 是对父类构造函数的**调用表达式**,不是访问某个对象。它必须显式调用(否则报错),且必须在访问 this 之前执行。此时 super 本身不产生值,但会初始化 this 并建立原型链关系。
- 执行 super() 后,this 才被绑定为当前实例,且其 [[Prototype]] 指向 父类.prototype
- super 在此处不能单独使用(如 console.log(super)),会语法错误
- 若父类构造函数返回一个对象,则 this 可能被替换为该返回值(极少见,一般不建议)
方法中 super.xxx 的语义
在类的方法(包括 getter/setter)体内,super.property 或 super.method() 表示**从当前对象的原型链上,沿 [[Prototype]] 向上查找并调用父类定义的同名属性或方法**。
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
- 查找起点是 Object.getPrototypeOf(this),即当前实例的直接原型(通常是子类 prototype)
- 实际调用时,this 绑定不变(仍指向当前实例),但方法体内的 super 在内部方法中继续按相同规则解析
- 例如:super.toString() 会找到 Object.prototype.toString(如果没被中间类覆盖)
静态方法中 super.xxx 的语义
在 static 方法内,super 指向**父类本身(即父构造函数)**,而非父类的 prototype。
立即学习“Java免费学习笔记(深入)”;
- super.staticMethod() 等价于 ParentClass.staticMethod()
- 此时 super 可以作为对象被读取属性(如 super.name),但不能调用非静态成员
- 静态上下文中的 super 基于类声明时的继承关系确定,与运行时 this 无关
super 不是 this,也不是可赋值的引用
super 是受语法限制的关键字,不可被赋值、解构、传参或 typeof 判断;它没有独立内存地址,也不对应某个可存储的“父类实例对象”。
- 试图写 const parent = super 会报 SyntaxError
- super 在每个方法调用中动态解析:基于当前 this(实例方法)或当前类(静态方法)的继承结构
- 它的行为由 ECMAScript 规范中 “MakeSuperPropertyReference” 和 “SuperCall” 等抽象操作定义,本质是运行时的查找机制

















