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

WBOY
发布: 2023-08-21 20:33:08
转载
1275 人浏览过

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,它接受一个名字和年龄参数,同时它有一个叫做getName()的方法,它被添加到Person构造函数的原型中。然后我们有一个子构造函数叫做Employee,它继承了Person构造函数的属性和方法。Employee构造函数接受一个额外的公司参数,同时它有一个叫做getCompany()的方法,它被添加到Employee构造函数的原型中。

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

以上是JavaScript中构造函数中的继承是如何工作的?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:tutorialspoint.com
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!