JavaScript类的静态成员直接绑定构造函数,通过__proto__链继承:子类__proto__指向父类,super可在静态方法中调父类静态方法,this指向当前调用类,实例无法直接访问静态属性。

JavaScript 类的静态属性和静态方法是直接绑定在类构造函数本身上的,不是实例的一部分。当使用 extends 实现继承时,静态成员的传递不是靠原型链查找实例方法那样“顺着 __proto__ 向上找”,而是通过构造函数自身的 [[Prototype]] 链完成的——即子类构造函数的 __proto__ 指向父类构造函数。
静态成员靠构造函数的原型链继承
子类 Child 继承父类 Parent 后,引擎会自动执行:
Object.setPrototypeOf(Child, Parent)- 这意味着
Child.__proto__ === Parent成立 - 当访问
Child.staticMethod(),JS 引擎先查Child自身,没找到就沿__proto__找到Parent,再在其上查找
静态方法中 this 指向子类本身
静态方法内部的 this 始终指向**当前调用它的那个类**,而不是父类。例如:
DMap GL地图JSAPI(dmapgl)开发指南。用于编写、审查、调试 DMap 地图 API 代码,涵盖地图初始化、覆盖物渲染、图层管理、事件处理、控件交互等任务。当用户提及 dmap、dmapgl、jsapi‑gl 或相关地图开发需求时自动触发。
-
Child.staticMethod()中的this是Child -
Parent.staticMethod()中的this是Parent - 因此可用
new this(...)在静态方法里创建当前类的实例(如工厂模式)
super 可用于调用父类静态方法
在子类的静态方法中,可以用 super.方法名() 显式调用父类同名静态方法:
- 不需要
super()初始化,因为静态方法不涉及实例创建 - 只要子类静态方法内有
super.xxx(),引擎就会从Child.__proto__(即Parent)上查找 - 注意:不能在普通函数或实例方法中用
super调静态方法,必须在静态方法上下文中
静态属性不会被实例继承
静态成员只属于类,不属于其实例:
-
const c = new Child()→c.staticProp是undefined - 即使
Child继承了Parent的静态属性,c也无法访问 - 想让实例间接使用,需在实例方法中通过
constructor.staticProp访问(前提是构造函数未被篡改)

















