JavaScript 的 class 是原型继承的语法糖,本质是构造函数与原型操作,不改变对象创建模型,仅提升可读性与结构化程度。
JavaScript 中的 class 语法本质上是原型继承的语法糖,它没有引入新的面向对象机制,只是让基于原型的继承写起来更像传统 OOP 语言(如 Java、C++)。
当你写一个 class,JS 引擎实际会把它转成一个构造函数,并把方法挂到该函数的 
prototype 上。
例如:
class Person {
constructor(name) {
this.name = name;
}
sayHello() {
return `Hello, I'm ${this.name}`;
}
}
等价于:
function Person(name) {
this.name = name;
}
Person.prototype.sayHello = function() {
return `Hello, I'm ${this.name}`;
};
两者创建的对象具有完全相同的原型链结构:person.__proto__ === Person.prototype,Person.prototype.constructor === Person。
这保证了方法复用——每个实例不重复创建函数,而是共享原型上的方法。
constructor 是一个普通函数,用于初始化实例属性static 方法)默认不会出现在实例上static 方法直接挂在构造函数本身(Person.sayHi = ...),不进入原型链prototype 访问,这是原型继承的核心机制extends 实际做了两件事:
prototype.__proto__ 指向父类的 prototype(实现方法继承)__proto__ 指向父类构造函数(实现静态方法继承)super() 在构造函数中相当于调用父类构造函数(Parent.call(this, ...));在方法中访问 super.xxx 则是通过 Object.getPrototypeOf(this).xxx 查找,本质仍是沿原型链向上查找。
无论用函数还是 class 创建实例,new 都执行相同步骤:
__proto__ 指向构造函数的 prototype
this 执行构造函数也就是说,class 并未修改 JavaScript 的对象创建模型,只是让这个过程更可读、更结构化。