JavaScript 中的类是 ES6 引入的语法糖,本质仍是基于原型的构造函数机制;它提升可读性与一致性,但不改变底层逻辑,需理解其与原型链的对应关系才能真正用好。

JavaScript 中的 类(class) 是 ES6 引入的语法糖,本质上仍是基于原型的构造函数机制,它本身不改变底层运行逻辑,只是让面向对象写法更清晰、更接近传统语言(如 Java、C++)的风格。
使用 class 关键字声明,内部用 constructor 定义初始化逻辑,其他方法直接写在类体中(无需 function 关键字):
class Person {
constructor(name, age) {
this.name = name;
this.age = age;
}
sayHello() {
return `Hello, I'm ${this.name}`;
}
static createAdult(name) {
return new Person(name, 18);
}
}
注意:类声明不会被提升(hoisting),必须先定义后使用;类内部方法默认不可枚举;类必须用 new 调用,不能直接执行。
类在底层会被编译为等价的构造函数+原型赋值代码。比如上面的 Person 类,大致等同于:
立即学习“Java免费学习笔记(深入)”;
function Person(name, age) {
this.name = name;
this.age = age;
}
Person.prototype.sayHello = function() {
return `Hello, I'm ${this.name}`;
};
Person.createAdult = function(name) {
return new Person(name, 18);
};
constructor 对应构造函数本身prototype 上new class {...} 和 new function(){...} 都会创建实例并绑定原型链prototype,也省去重复写 function
static、extends、super 等关键字让继承、静态成员、父类调用更直观constructor 或通过字段声明语法 prop = value)Parent.call(this) + Object.setPrototypeOf(Child.prototype, Parent.prototype);类用 extends + super(),更安全且强制要求子类 constructor 调用 super
不是必须用类才能写面向对象代码,但以下情况推荐使用:
extends 比手动设置原型链更可靠)@readonly)、私有字段(#field)等新特性时(这些只支持类语法)基本上就这些。类不是新机制,而是让老机制更好用的那层“糖”。理解它背后仍是构造函数和原型链,才能真正用好它。
以上就是javascript类如何定义_它与构造函数有什么区别和联系?的详细内容,更多请关注php中文网其它相关文章!
java怎么学习?java怎么入门?java在哪学?java怎么学才快?不用担心,这里为大家提供了java速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号