javascript 中的 class 是构造函数与原型链的语法糖,本质为函数,实例方法挂载于 prototype,静态方法赋给函数本身,类声明不可提升,类表达式可赋值,new 实例化遵循原型链四步流程。

JavaScript 中的 class 不是新机制,而是对构造函数 + 原型链操作的一层简洁封装。它让写法更接近传统面向对象语言,但底层运行逻辑完全依赖函数和 [[Prototype]] 链。
class 本质是函数
你写的 class Person { ... },在 JavaScript 引擎眼里就是一个普通函数:
-
typeof Person返回"function" -
Person === Person.constructor成立(构造方法即函数本体) - 所有实例方法自动挂载到
Person.prototype上 - 静态方法直接作为属性赋给
Person函数对象本身
类声明与类表达式
定义方式有两种,行为略有不同:
-
类声明:不可提升,必须先定义再使用,类似
let/const - 类表达式:可匿名或命名(命名仅在内部可用),可赋值、传参、立即执行
例如:const Animal = class { ... }; 是合法的;而 new Animal() 必须在赋值之后调用。
实例化过程四步走
执行 new Person('Alice', 25) 时,引擎实际做了这些事:
- 创建一个空对象
- 把该对象的
[[Prototype]]指向Person.prototype - 以这个新对象为
this,调用Person构造函数 - 若构造函数没显式返回对象,则自动返回新对象
验证原型链的关键线索
你可以用这几行代码确认 class 的真实结构:
-
person1.__proto__ === Person.prototype→true -
Person.prototype.constructor === Person→true -
Person.__proto__ === Function.prototype→true -
Person.prototype.__proto__ === Object.prototype→true
这串链式关系说明:class 就是函数,函数有 prototype,prototype 有 constructor,整个体系没脱离原型继承。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











