JavaScript 的 OOP 基于原型,ES6 的 class 是语法糖;用 class 定义类,constructor 初始化属性,方法写在类体中;支持公有字段、static 静态成员;继承用 extends 和 super();所有方法仍在 prototype 上,原型链未变。

JavaScript 中的面向对象编程(OOP)是一种以“对象”为核心组织代码的方式,强调封装、继承和多态。虽然 JS 早期基于原型(prototype),但从 ES6 开始,它提供了 class 语法——这是一种更清晰、更接近传统 OOP 语言(如 Java、C++)的写法,但底层依然基于原型机制。
如何用 class 创建类?
使用 class 关键字定义类,配合 constructor 方法初始化实例属性,其他方法直接写在类体中:
示例:
class Person { constructor(name, age) { this.name = name; this.age = age; } sayHello() { console.log(`你好,我是${this.name}`); }}const alice = new Person('Alice', 30);alice.sayHello(); // 你好,我是Alice
注意:class 声明不会被提升,必须先定义再使用;类内部方法默认不可枚举;类体中只能放方法,不能直接写属性赋值(ES2022 起支持公有字段语法,见下文)。
立即学习“Java免费学习笔记(深入)”;
如何添加实例属性与静态成员?
除了 constructor 中的 this.xxx,你还可以用公有字段语法(ES2022+)在类顶层声明实例属性;用 static 关键字定义静态方法或属性,它们属于类本身,不被实例继承:
公有字段(无需 constructor):name = 'default'; 静态方法:static createAdmin() { return new User('admin'); },调用方式:User.createAdmin() 静态属性:static VERSION = '1.0';,访问方式:User.VERSION
如何实现继承?
用 extends 关键字继承父类,子类构造器中必须调用 super()(否则报错),用于初始化父类的 this:
class Student extends Person { constructor(name, age, grade) { super(name, age); // 必须! this.grade = grade; } study() { console.log(`${this.name} 正在学习`); }}const bob = new Student('Bob', 20, 'A');bob.sayHello(); // 继承自 Personbob.study(); // 自有方法
类只是语法糖,原型链仍在背后工作
class 并没有改变 JavaScript 的原型本质。上面的 Person 类,其方法仍挂在 Person.prototype 上;Student 继承实质是设置 Student.prototype.__proto__ === Person.prototype。理解这点,有助于调试和深入掌握继承行为。
基本上就这些。写 class 不复杂,但容易忽略 super 和原型关系——动手试几次,比死记语法更管用。
以上就是javascript中的面向对象编程是什么_如何创建类?的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1543568.html
微信扫一扫
支付宝扫一扫