JavaScript 中的面向对象编程简介
面向对象编程(OOP)是一种强大的编程范例,它将代码组织成对象,这些对象包含数据(属性)和操作这些数据的方法。在 JavaScript 中,OOP 通过类来实现。
JavaScript 中的类
类是面向对象编程的基石,它定义了对象的结构和行为。通过使用关键字 class
,我们可以创建自己的类。例如:
class Person {
constructor(name, age) {
this.name = name;
this.age = age;
}
getFullName() {
return this.name;
}
}
在这个类中,constructor
方法在创建一个新对象时被调用,getFullName
方法返回对象的姓名。
对象实例化和访问成员
我们可以通过关键字 new
来实例化一个类,创建一个该类的对象。实例化的对象可以访问类的属性和方法。例如:
const person = new Person("John Doe", 30);
console.log(person.name); // John Doe
console.log(person.getFullName()); // John Doe
JavaScript 中的继承
继承是 OOP 的另一个重要概念,它允许类从其他类(父类)继承属性和方法。通过关键字 extends
,我们可以定义一个子类,它继承自父类。例如:
class Employee extends Person {
constructor(name, age, salary) {
super(name, age);
this.salary = salary;
}
getSalary() {
return this.salary;
}
}
在上面的示例中,Employee
类继承自 Person
类,它继承了 name
和 age
属性,并添加了一个新的 salary
属性及 getSalary
方法。
实例化子类和覆盖方法
我们可以像实例化父类一样实例化子类。子类对象可以访问父类和子类中的所有属性和方法。子类还可以在不改变父类的情况下覆盖父类的方法。例如:
const employee = new Employee("John Doe", 30, 10000);
console.log(employee.name); // John Doe
console.log(employee.getSalary()); // 10000
理解原型链
在 JavaScript 中,类和继承通过原型链机制实现。每个对象都有一个指向其父对象的隐式原型属性。这使子类可以访问父类属性和方法,即使它们没有显式定义。
Object.prototype -> Person.prototype -> Employee.prototype
↓ ↓
employee
总结
JavaScript 中的类和继承提供了强大的机制,用于组织和重用代码。通过使用类,我们可以创建具有封装、继承和多态性的对象,从而使我们的代码更模块化、更易维护。