返回

用面向对象的方式进行编程:了解JavaScript中的继承

前端

面向对象编程
面向对象编程 (OOP) 是一种将程序组织成对象的方法。在 OOP 中,对象是程序的基本构建块,它们包含数据和行为。数据存储在属性中,行为存储在方法中。

##原型链
JavaScript中的继承是通过原型链实现的。每个对象都有一个原型对象,原型对象也具有属性和方法。当一个对象访问一个属性或方法时,首先会在该对象中搜索该属性或方法。如果没有找到,则会继续搜索对象的原型对象。依此类推,直到找到该属性或方法,或者到达原型链的末端。

##父类型和子类型
在 OOP 中,对象可以分为父类型和子类型。父类型是具有某种属性和方法的对象,子类型是继承了父类型属性和方法的对象。子类型可以添加自己的属性和方法,也可以覆盖父类型的方法。

##继承
继承是子类型从父类型继承属性和方法的过程。在 JavaScript 中,可以通过使用 Object.create() 方法来实现继承。

const parentObject = {
  property: 'value',
  method: function() {
    console.log('method called');
  }
};

const childObject = Object.create(parentObject);

childObject.property; // 'value'
childObject.method(); // 'method called'

##示例

让我们通过一个示例来说明如何使用 JavaScript 中的继承。

假设我们有一个 Person 对象,它具有 nameage 属性,以及一个 greet() 方法。

const Person = {
  name: 'John Doe',
  age: 30,
  greet: function() {
    console.log(`Hello, my name is ${this.name} and I am ${this.age} years old.`);
  }
};

现在,我们想要创建一个 Student 对象,它继承了 Person 对象的属性和方法,并添加了 major 属性和 study() 方法。

const Student = Object.create(Person);

Student.major = 'Computer Science';

Student.study = function() {
  console.log('I am studying.');
};

const student = new Student();

student.name; // 'John Doe'
student.age; // 30
student.greet(); // 'Hello, my name is John Doe and I am 30 years old.'
student.major; // 'Computer Science'
student.study(); // 'I am studying.'

如你所见,Student 对象继承了 Person 对象的属性和方法,并添加了自己的属性和方法。

##结论

继承是 OOP 中一种非常强大的工具。它允许您创建复杂的对象,这些对象可以重用代码并保持代码简洁。