javascript 的继承

admin3个月前软件教程51

在JavaScript中实现继承是Web开发者们经常遇到的问题之一。因为在JavaScript中,没有 Class 这个概念,因此要实现继承需要使用一些特殊的技巧。

比如说,当我们想要创建一个新的对象并且让其具备一些父类对象的属性和方法时,我们可以通过prototype属性来实现继承。

function Person(name, age) {this.name = name;this.age = age;}Person.prototype.sayHello = function() {console.log('Hello, my name is ' + this.name);}function Student(name, age, grade) {this.grade = grade;Person.call(this, name, age);}Student.prototype = Object.create(Person.prototype);Student.prototype.constructor = Student;Student.prototype.sayGrade = function() {console.log('I am in grade ' + this.grade);}var alice = new Student('Alice', 16, 11);alice.sayHello(); // 'Hello, my name is Alice'alice.sayGrade(); // 'I am in grade 11'

这里,我们定义了一个Person构造函数来创建一个 Person 对象,它具有nameage属性以及一个sayHello方法。接着我们定义了一个Student构造函数来创建一个 Student 对象,它继承自 Person,并且具有一个grade属性以及一个sayGrade方法。

关键的部分是这行代码:

Student.prototype = Object.create(Person.prototype);

这行代码通过创建一个新对象,并将该对象的原型设置为 Person 的原型,从而实现了 Student 继承自 Person。接着,我们还需要重置 Student 构造函数的指向:

Student.prototype.constructor = Student;

这便是我们实现继承的基本思路。当使用new关键字创建一个 Student 对象时,我们在 Student 构造函数中调用了 Person,并通过call函数将新创建的 Student 对象作为 this 传递给它。于是,我们便可以在新创建的对象上添加新的属性和方法及其继承的属性和方法。

JavaScript的继承还可以使用 ES6 中的 class 语法来实现:

class Person {constructor(name, age) {this.name = name;this.age = age;}sayHello() {console.log('Hello, my name is ' + this.name);}}class Student extends Person {constructor(name, age, grade) {super(name, age);this.grade = grade;}sayGrade() {console.log('I am in grade ' + this.grade);}}let alice = new Student('Alice', 16, 11);alice.sayHello(); // 'Hello, my name is Alice'alice.sayGrade(); // 'I am in grade 11'

可以看到,class 中的 extends 关键字使得 Student 继承自 Person,而不需要手动设置 Student 的原型。

JavaScript 的继承虽然看起来有些奇怪,但是它的灵活性和可扩展性使得它成为了一个非常好用的编程语言。掌握了 JavaScript 的继承,对于 Web 开发者们来说是一个非常重要的能力。

免责声明:本文内容来自用户上传并发布,站点仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。请核实广告和内容真实性,谨慎使用。

相关文章

闲鱼买家个人原因拒收

在闲鱼上,买家拒收后,当收到的拒收包裹后,已经支付的款项将会按照原支付途径退还。非用户原因造成的包裹拒收,用户无需支付配送费,用户原因造成的包裹拒收,将收取配送费。闲鱼是阿里巴巴旗下闲置交易平台App...

京东发布MySQL Group Replication官方文档中文版!

MySQL Group Replication(简称MGR)是MySQL官方于2016年12月推出的一个全新的高可用与高扩展的解决方案。MySQL组复制提供了高可用、高扩展、高可靠的MySQL集群服务...

办公系统APP开发如何提升效率

办公系统APP软件开发就是针对于现在企业现代化管理提升的重要工具,通过互联网工具的使用提升办公效率。时间就是金钱,办公效率的提升有助于提升公司的发展速度。企业在办公的管理效率对于管理人员的素质要求极为...

android五大应用开发框架是什么

现如今移动时代发展速度越来越快,而说起移动端开发,那么其中就分为安卓和苹果端开发,所以开发好android应用,这样才能为企业带来更大的营销。而如果想要开发好android应用程序,那么就需要掌握an...

javascript 生成 html文件上传

标签只能在网页内部使用,它是一种被称为JavaScript的编程语言,广泛用于网页的交互性。使用JavaScript可以构建一个功能强大的网站,其中包括表单、动画、交互式地图等,JavaScript的...

小恩爱能查和前任的记录吗

小恩爱能查和前任的记录,若用户没有清除手机里的数据,和现任绑定之后,也可以可以查看前任记录的,不过只能本人查看,别人是看不到的,若用户不想查看,只需退出小恩爱后清理一下数据就可以了,或者说卸载重新下载...