javascript类是原型机制的语法糖,本质为构造函数;方法挂载于prototype供实例共享,实例字段直接赋值给this;extends通过重连__proto__实现继承,super()调用父类构造函数。

JavaScript 的类不是独立的面向对象模型,而是原型机制的语法糖。所有 class 行为最终都映射到函数、prototype 和 [[Prototype]] 链上,理解这一点是掌握 JS 继承本质的关键。
类的本质仍是构造函数
定义一个 class,底层仍生成一个可调用的函数对象:
-
typeof MyClass返回"function",说明它就是一个函数 - 该函数自动拥有
prototype属性,指向一个默认包含constructor的对象 - 使用
new MyClass()实际触发的是函数调用 + 原型绑定流程
类方法全部挂载在 prototype 上
你在 class 中写的普通方法(如 sayHi()),不会出现在实例自身,而是被添加到构造函数的 prototype 对象中:
-
MyClass.prototype.sayHi是函数,而new MyClass().sayHi是对它的引用 - 所有实例共享同一份方法,节省内存
- 可通过
instance.__proto__ === MyClass.prototype验证链接关系
公共实例字段不走原型链
ES2022 引入的字段声明(如 name = "Alice")行为不同:
- 它们在实例创建时直接赋值给
this,等效于在constructor中写this.name = "Alice" - 因此
instance.name存在于实例自身,MyClass.prototype.name为undefined - 这类字段不可被继承或共享,每个实例独有一份
继承靠的是原型链重连
extends 并非创建新结构,而是调整原型链指向:
-
Child.prototype.__proto__被设为Parent.prototype,形成委托链 -
super()在子类 constructor 中负责初始化父类实例属性(即执行Parent.call(this, ...)) - 静态方法则挂在
Child函数自身上,与原型链无关
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











