# JavaScript对象封装、多态、继承
# 继承
继承就是子类可以使用父类的所有功能,并且对这些功能进行扩展。
比如我有个构造函数A,然后又有个构造函数B,但是B想要使用A里的一些属性和方法,一种办法就是让我们自身化身为CV侠,复制粘贴一波。还有一种就是利用继承,我让B直接继承了A里的功能,这样我就能用它了。
今天要介绍的八种继承方式在目录中都已经列举出来了。
不着急,从浅到深咱一个个来看。
# 1. 原型链继承
将子类的原型对象指向父类的实例
# 1.1 题目一
(理解原型链继承的概念)
function Parent () {
this.name = 'Parent'
this.sex = 'boy'
}
Parent.prototype.getName = function () {
console.log(this.name)
}
function Child () {
this.name = 'child'
}
Child.prototype = new Parent()
var child1 = new Child()
child1.getName()
console.log(child1)
@前端进阶之旅: 代码已经复制到剪贴板
好了,快告诉我答案吧,会打印出什么 🤔️ ?
'child'
Child {name: "child"}
@前端进阶之旅: 代码已经复制到剪贴板
这…这很好理解呀
child1是通过子类构造函数Child生成的对象,那我就有属性name,并且属性值也是自己的child- 然后子类构造函数
Child它的原型被指向了父类构造函数Parent创建出来的"无名实例" - 这样的话,我
child1就可以使用你这个"无名实例"里的所有属性和方法了呀,因此child1.getName()有效。并且打印出child。 - 另外由于
sex、getName都是Child原型对象上的属性,所以并不会表现在child1上。

所以现在你知道了吧,这种方式就叫做原型链继承。
将子类的原型对象指向父类的实例。
我们来写个伪代码,方便记忆:
