JavaScript 中的 class 是构造函数的语法糖,本质基于原型机制,非全新对象模型;它使构造器、原型方法和静态方法定义更清晰,但底层仍等价于函数与原型操作。

JavaScript 中的 class 是构造函数的语法糖,本质仍是基于原型的面向对象机制,不是全新对象模型。它让定义构造器、原型方法和静态方法更清晰直观,但底层运行逻辑和传统构造函数完全一致。
class 的基本定义方式
使用 class 关键字声明类,内部用 constructor() 定义初始化逻辑,其他方法直接写在类体中(自动挂载到原型上):
class Person {
constructor(name, age) {
this.name = name;
this.age = age;
}
sayHello() {
return `Hello, I'm ${this.name}`;
}
static createAnonymous() {
return new Person('Anonymous', 0);
}
}登录后复制
注意:constructor 是可选的,省略时会默认添加空构造函数;类内部方法默认不可枚举;类声明不会被提升(必须先声明后使用)。
与传统构造函数的核心区别
-
语法更简洁统一:把构造逻辑、原型方法、静态方法集中在一个块内,避免手动操作
prototype或重复写Person.prototype.xxx = function(){} -
强制使用
new:类构造器调用时若不加new,会直接报错(TypeError);而普通构造函数不加new可能静默失败或污染全局 -
严格模式默认开启:类内部所有代码自动运行在严格模式下,无需手动声明
"use strict" -
没有变量提升:类声明是
let类似的行为,存在“暂时性死区”,不能在声明前访问
继承写法更直观(extends + super)
相比构造函数手动设置原型链(Student.prototype = Object.create(Person.prototype)),class 用 extends 和 super() 明确表达继承关系:
立即学习“Java免费学习笔记(深入)”;
标签: javascript java 浏览器 区别
还木有评论哦,快来抢沙发吧~