大厂面试经典问题:什么是继承 ?JavaScrpt中如何通过原型链实现继承 ?
有同学提问,能不能讲讲继承,这一篇笔记就来深入说说继承相关的内容,包含了什么是继承,JavaScript如何实现继承,通过原型链实现继承。
什么是继承 ?JavaScript中如何通过原型链实现继承 ?
以下我们先使用UML类图来表示类的属性和方法,用以举例说明
UML(统一建模语言)是一种为面向对象系统的产品进行说明、可视化和编制文档的一种标准语言,是非专利的第三代建模和规约语言。
UML是面向对象设计的建模工具,独立于任何具体程序设计语言。
以下两个无关的类:我们发现,People类 和 Car类 没有任何
People类和Student类的关系:我们发现,Student是一种 People
-
People类拥有的属性和方法Student类
都有
,Student类还扩展
了一些属性和方法 -
Student
“是一种”
People,两类之间是“is a kind of ”
关系 -
这就是
继承
关系:Student 类继承自People类
1、什么是继承
继承描述了两个类之间的 “ is a kind of ” 关系
比如:学生“是一种”
人,所以人类和学生类之间就构成继承关系
People是 "父类"
(或 "超类"、”基类“)Student是 ”子类“
(或 ”派生类“)子类丰富了父类,让类描述得更具体、更细化。
在UML图示中使用白色的空心箭头
来表示类和类之间的继承关系
箭头的方向是由子类指向父类
这样的表达方式就是继承
更多的继承关系举例
父类 | 子类 |
---|---|
People | Student、Teacher |
Vehicle | Car、Truck、Motorcycle |
Appliance | Television、Refrigerator |
Publication | Book、Magazine |
JavaScript中如何实现继承?
-
实现继承的关键在于:子类必须拥有父类的全部属性和方法,同时子类还应该能定义自己特有的属性和方法
-
使用JavaScript特有的原型链特性来实现继承,是普遍的做法
-
在今后学习ES6时,将介绍新的实现继承的方法
通过原型链实现继承
当然还有在ES6中如何实现继承,后续有需求了再分享 !大家也可以踊跃提问哈 ,一起加油 ^_^我们学的不仅是技术,更是梦想 !因为爱,所以认真 。如有相关前端方面的技术问题 ,欢迎主页添加我,我会定期在群里给大家分享最新技术和解答问题 。