JavaScript 构造函数中的继承是如何工作的?


在本文中,我们将讨论 JavaScript 中继承是如何工作的,以及如何在 JavaScript 的构造函数中使用此面向对象编程特性。

我们还将简要介绍 JavaScript 中的原型对象。因此,非常感谢您事先了解相关知识。

在 JavaScript 中,继承是一种机制,对象可以通过它继承另一个对象属性和方法。这可以通过使用构造函数和原型属性来实现。

创建构造函数时,可以使用原型属性将属性和方法添加到构造函数的原型对象中。然后,使用构造函数创建的任何对象都将继承这些属性和方法。

示例

让我们借助以下示例来理解这一点:

function Person(name, age) {
   this.name = name;
   this.age = age;
}
Person.prototype.getName = function() {
   return this.name;
};

在此示例中,Person 构造函数具有 name 和 age 属性以及 getName 方法。使用 Person 构造函数创建的任何对象都将继承原型中的这些属性和方法。

您还可以创建一个新的构造函数,通过使用 call 或 apply 方法调用父构造函数并将 this 作为第一个参数传递,从而继承自现有的构造函数。

示例

以下是 JavaScript 中正在工作的继承完整示例:

// Parent constructor function
function Person(name, age) {
   this.name = name;
   this.age = age;
}
// Adding a method to the prototype
Person.prototype.getName = function() {
   return this.name;
};
// Child constructor function
function Employee(name, age, company) {
   
   // Calling the parent constructor function
   Person.call(this, name, age);
   this.company = company;
}
// Setting the prototype of the child constructor function
Employee.prototype = Object.create(Person.prototype);
Employee.prototype.constructor = Employee;

// Adding a method to the child constructor function
Employee.prototype.getCompany = function() {
   return this.company;
};
const employee1 = new Employee("John", 25, "Google");
console.log(employee1.name); // "John"
console.log(employee1.age); // 25
console.log(employee1.getName()); // "John"
console.log(employee1.getCompany()); // "Google"

在此示例中,我们有一个名为 Person 的父构造函数,它接收 name 和 age 参数,它还有一个名为 getName() 的方法,该方法添加到 Person 构造函数的原型中。然后,我们有一个名为 Employee 的子构造函数,它继承自 Person 构造函数的属性和方法。Employee 构造函数接收一个额外的 company 参数,并且它还有一个名为 getCompany() 的方法,该方法添加到 Employee 构造函数的原型中。

因此,总的来说,在 JavaScript 中,构造函数可以用来创建继承自父对象属性和方法的对象,这可以通过将属性和方法添加到构造函数的原型对象中,或者通过创建一个继承自现有构造函数的新构造函数来实现。

更新于: 2023年2月6日

2K+ 阅读量

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告