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

JavaScript 中的面向对象编程(OOP)是一种以“对象”为核心组织代码的方式,强调封装、继承和多态。虽然 JS 早期基于原型(prototype),但从 ES6 开始,它提供了 class 语法——这是一种更清晰、更接近传统 OOP 语言(如 Java、C++)的写法,但底层依然基于原型机制。
使用 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免费学习笔记(深入)”;
这本书给出了一份关于python这门优美语言的精要的参考。作者通过一个完整而清晰的入门指引将你带入python的乐园,随后在语法、类型和对象、运算符与表达式、控制流函数与函数编程、类及面向对象编程、模块和包、输入输出、执行环境等多方面给出了详尽的讲解。如果你想加入 python的世界,David M beazley的这本书可不要错过哦。 (封面是最新英文版的,中文版貌似只译到第二版)
9
除了 constructor 中的 this.xxx,你还可以用公有字段语法(ES2022+)在类顶层声明实例属性;用 static 关键字定义静态方法或属性,它们属于类本身,不被实例继承:
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(); // 继承自 Person
bob.study(); // 自有方法
class 并没有改变 JavaScript 的原型本质。上面的 Person 类,其方法仍挂在 Person.prototype 上;Student 继承实质是设置 Student.prototype.__proto__ === Person.prototype。理解这点,有助于调试和深入掌握继承行为。
基本上就这些。写 class 不复杂,但容易忽略 super 和原型关系——动手试几次,比死记语法更管用。
以上就是javascript中的面向对象编程是什么_如何创建类?的详细内容,更多请关注php中文网其它相关文章!
java怎么学习?java怎么入门?java在哪学?java怎么学才快?不用担心,这里为大家提供了java速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号