ES6的class是函数语法糖,未改变原型链机制;class声明本质是函数,实例__proto__指向类prototype,类prototype.constructor指回自身,extends自动设置三条原型链,方法挂prototype、实例属性挂this、静态方法挂类本身。

ES6 的 class 没有引入新对象模型,它完全建立在 JavaScript 原有的原型链机制之上——只是把过去需要手动拼装的原型关系,用更简洁、更可控的语法封装起来了。
类声明本质是函数,不是新类型
你写的 class Person { },运行时等价于一个具名函数表达式,并自动绑定到 Person.prototype.constructor。可以通过 typeof Person 验证,结果始终是 "function"。它不会变量提升,也不能直接调用(必须用 new),因为底层加了 _classCallCheck 检查,确保只作为构造器使用。
实例、原型、类三者的链接关系明确
- 每个实例对象的
__proto__指向其类的prototype对象 - 类的
prototype对象的constructor指回该类本身 - 类本身(即函数)的
__proto__指向Function.prototype,符合所有函数的共性
继承(extends)只是自动设置三条原型链
当你写 class Child extends Parent,引擎会自动完成:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
-
Child.__proto__ === Parent:子类可继承父类的静态方法 -
Child.prototype.__proto__ === Parent.prototype:子类实例可访问父类原型上的方法 - 强制子类构造函数中调用
super(),否则this处于未初始化状态,访问即报错
方法与属性的挂载位置有区别
类体内定义的普通方法(如 speak() { })自动添加到 prototype 上,供所有实例共享;而用赋值形式写的实例字段(如 say = () => {} 或 field = 1)则直接绑定到 this,属于实例自身。静态方法(static method())则直接挂在类函数本身上,不进入原型链。
立即学习“Java免费学习笔记(深入)”;

















