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 中,构造函数可以用来创建继承自父对象属性和方法的对象,这可以通过将属性和方法添加到构造函数的原型对象中,或者通过创建一个继承自现有构造函数的新构造函数来实现。