JavaScript中的class是基于原型的语法糖,通过class定义类并用constructor初始化实例,方法挂载于原型;使用extends实现继承,子类需调用super()初始化父类,支持方法重写;static定义静态方法供类直接调用;#开头的私有字段限制外部访问,提升封装性。

JavaScript 中的面向对象编程(OOP)基于原型(prototype),但 ES6 引入了 class 语法,让开发者可以用更清晰、更接近传统语言的方式来创建对象和实现继承。虽然 class 在 JavaScript 中是“语法糖”,其底层仍是基于原型机制,但使用它可以让代码结构更清晰、更易维护。
JavaScript 类的基本语法
使用 class 关键字可以定义一个类。类中通常包含一个 constructor 方法用于初始化实例属性,以及其它方法定义对象行为。
示例:
class Person { constructor(name, age) { this.name = name; this.age = age; }sayHello() {console.log(你好,我是${this.name},今年${this.age}岁。);}}
const p1 = new Person("小明", 25);p1.sayHello(); // 输出:你好,我是小明,今年25岁。
在这个例子中,Person 是一个类,constructor 构造函数在使用 new 创建实例时自动调用,sayHello 是原型上的方法,所有实例共享。
类的继承:extends 与 super
JavaScript 支持通过 extends 实现类的继承,子类可以继承父类的属性和方法。在子类构造函数中,必须先调用 super() 来调用父类的构造函数。
立即学习“Java免费学习笔记(深入)”;
示例:
class Student extends Person { constructor(name, age, grade) { super(name, age); // 调用父类构造函数 this.grade = grade; }study() {console.log(${this.name} 正在学习,年级是 ${this.grade}。);}
// 可以重写父类方法sayHello() {console.log(我是学生 ${this.name},今年${this.age}岁,读 ${this.grade} 年级。);}}
const s1 = new Student("小红", 20, "大三");s1.sayHello(); // 覆盖后的方法s1.study(); // 子类特有方法
这里 Student 继承了 Person 的所有功能,并扩展了自己的属性和方法。通过 super() 确保父类正确初始化,这是子类构造函数中的必要步骤。
静态方法与私有字段(可选)
类中还可以定义静态方法,它们属于类本身而不是实例,通过 static 关键字声明。
class MathUtils { static add(a, b) { return a + b; }}console.log(MathUtils.add(3, 5)); // 8
静态方法常用于工具函数或不需要实例化的操作。
现代 JavaScript 还支持私有字段(以 # 开头),限制外部访问:
class BankAccount { #balance = 0;deposit(amount) {this.#balance += amount;}
getBalance() {return this.#balance;}}
const account = new BankAccount();account.deposit(100);console.log(account.getBalance()); // 100// account.#balance; // 错误:无法访问私有字段
总结
JavaScript 的 class 提供了一种更直观的方式来组织面向对象的代码。通过 class 定义模板,用 extends 实现继承,配合 super 调用父类逻辑,再加上静态方法和私有字段的支持,使得 JS 的 OOP 更加完整和安全。尽管底层仍是原型链,但 class 让开发体验更接近传统面向对象语言。
基本上就这些,掌握好类与继承,能让你写出结构清晰、易于扩展的 JavaScript 应用。不复杂但容易忽略的是 super 的调用时机和私有字段的命名规则。
以上就是面向对象编程_javascript类与继承的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1541260.html
微信扫一扫
支付宝扫一扫