JavaScript中通过extends实现类继承,子类继承父类原型方法和静态成员,必须在constructor中首行调用super()初始化父类this,可重写方法并用super.调用父类逻辑,支持继承内置类如Array、Error。

JavaScript 中通过 extends 关键字实现类继承,本质是让子类继承父类的原型方法和静态成员,同时必须在子类构造函数中调用 super() 来初始化父类实例属性。
基本语法:子类 extends 父类
使用 extends 声明子类,语法简洁明确:
- 父类可以是普通 class、内置类(如
Array、Error),甚至函数(但需兼容构造调用) - 子类会自动获得父类原型上的所有可枚举方法(如
toString、自定义方法) - 子类也会继承父类的静态属性和方法(如
Parent.staticMethod())
必须调用 super():初始化父类 this
如果子类定义了 constructor,就必须第一行调用 super(...args),否则报错 ReferenceError: Must call super constructor:
-
super()负责创建并绑定父类的this,之后才能给this添加子类专属属性 - 若父类构造函数需要参数,
super()必须传入对应参数,例如super(name, age) - 不能在调用
super()前访问this,否则语法错误
重写方法与调用父类逻辑:用 super. 方法名
子类可覆盖父类方法,同时通过 super.xxx() 显式调用父类同名方法,实现逻辑复用:
立即学习“Java免费学习笔记(深入)”;
- 在实例方法中:
super.sayHello()调用父类原型上的sayHello - 在静态方法中:
super.staticMethod()调用父类的静态方法 - 注意:
super不是对象,不能解构或赋值给变量;它只在方法内部有效
继承内置类:获得完整行为(如 Array 子类可被 for...of 遍历)
ES6 允许继承内置构造器,这是传统原型链难以做到的:
- 继承
Array的子类,实例具备length、支持push/map,且能被Array.isArray()识别为数组 - 继承
Error可确保堆栈信息正确,instanceof Error返回true - 关键点:必须在
super()后手动设置this.length或其他内部槽位(某些引擎下需额外处理)


















