JavaScript的class语法本质是原型机制的语法糖,所有功能——包括构造函数、原型方法、继承(extends)、super调用、静态方法、getter/setter等——均基于prototype、__proto__和原型链实现,运行时行为与ES5函数+prototype完全一致。

是的,JavaScript 的 class 语法底层完全基于原型机制,不是新模型,只是写法更规整的封装。
它没有改变 JavaScript 的对象创建和继承本质,所有行为——方法共享、属性查找、instanceof 判断、super 调用、extends 继承——都靠 prototype、__proto__ 和原型链运行。
分析 Java Spring Boot 后端 Controller 代码,自动生成 Markdown 格式的接口文档。当用户说“生成 Java 接口文档”、“生成 API 文档”、“从 Spring 代码生成文档”时触发。
class 声明 = 构造函数 + prototype 操作
- `class Person { constructor(name) { this.name = name; } sayHi() { ... } }` 等价于: ```js function Person(name) { this.name = name; } Person.prototype.sayHi = function() { ... }; ``` - 实例的 `__proto__` 仍指向 `Person.prototype`,`Person.prototype.constructor` 仍指向 `Person` 函数。extends 继承 = 原型链手动连接的自动化
- `class Student extends Person` 底层做了两件事: - `Student.prototype.__proto__ = Person.prototype`(让实例能访问父类方法) - `Student.__proto__ = Person`(让静态方法可继承) - `super()` 在构造函数里等价于 `Person.call(this, ...)`,在方法里等价于 `Object.getPrototypeOf(this).xxx`class 特性都可被原型写法复现
- 静态方法 `static` → 直接赋值给构造函数:`Person.walk = function(){}` - getter/setter → 用 `Object.defineProperty(Person.prototype, 'age', {...})` - 私有字段(`#field`)虽需额外机制支持,但访问仍受限于实例与原型的绑定关系,不破坏原型链主干关键区别只是“怎么写”,不是“怎么跑”
- class 不提升、强制 `new`、方法不可枚举、自动严格模式——这些是语法约束,不影响运行时原型行为 - `instanceof` 依然检查 `obj.__proto__` 是否在构造函数 `prototype` 链上 - 所有继承、查找、绑定逻辑,和 ES5 的 `function + prototype` 完全一致不复杂但容易忽略

















