es6的extends是原型继承的语法糖,子类继承父类实例属性、方法、静态成员、getter/setter及prototype链;子类constructor中必须首行调用super()初始化this;super在constructor中为函数,在方法中为对象;instanceof判断准确。

ES6 的 extends 关键字让类继承变得直观、声明式,它不是全新机制,而是对底层原型链的语法糖封装——本质仍是 JavaScript 原有的基于原型的对象继承,但写法更清晰、约束更明确。
extends 的基本用法与继承内容
使用 extends 声明子类时,子类会自动继承父类的以下内容:
- 实例属性(在父类 constructor 中通过 this.xxx 赋值的)
- 实例方法(定义在父类 prototype 上的方法)
- 静态方法和静态属性(直接挂在父类构造函数上的)
- getter/setter 访问器
- 父类的 prototype 链关系(即
Object.getPrototypeOf(Child) === Parent)
super() 是强制前提,不是可选项
如果子类显式定义了 constructor,就必须在第一行调用 super(),否则会立即报错:Must call super constructor in derived class before accessing 'this'。这是因为:
DMap GL地图JSAPI(dmapgl)开发指南。用于编写、审查、调试 DMap 地图 API 代码,涵盖地图初始化、覆盖物渲染、图层管理、事件处理、控件交互等任务。当用户提及 dmap、dmapgl、jsapi‑gl 或相关地图开发需求时自动触发。
- ES6 继承机制是“先创建父类 this,再由子类加工”;而 ES5 是“先创建空 this,再用父类构造函数填充”
- super() 负责初始化父类部分的 this,没它就没有合法的 this 对象
- 在 super() 之前访问 this、读写属性、调用方法,全部禁止
super 的两种用法:函数 vs 对象
super 不是固定角色,它根据上下文切换行为:
- 在 constructor 中作为函数调用(
super(...args)):代表父类构造函数,用于初始化父类状态 - 在普通实例方法中作为对象使用(
super.methodName()):指向父类的 prototype,可调用被重写的方法 - 在静态方法中作为对象使用(
super.staticMethod()):指向父类构造函数本身
继承后实例的类型判断依然准确
子类实例既是子类的实例,也是父类的实例,instanceof 判断完全符合预期:
例如:const cp = new ColorPoint(1, 2, 'red');cp instanceof ColorPoint // truecp instanceof Point // true










