本文主要总结javascript 中的继承实现,主要包括原型继承,构造函数继承和组合继承。但在之前还需要巩固一下原型相关的知识
1.构造函数,原型对象,和对象实例的关系
1)文字描述三者之间的关系:
1.每个构造函数都有一个原型对象;
2.原型对象都包含一个指针指向构造函数;
3.实例都包含一个指向原型对象的指针;
4.构造函数通过new关键字创建对象实例
2)代码演示:
3)图解关系
小结:通过上述的文字,代码,和图片应该可以明白构造函数,原型对象和对象实例之间的关系。
那么,考虑一个问题:
如果将原型对象等于另一个对象的实例,会怎样??这个问题就引出了js中的原型链问题!!
2.原型链
1)原型链的形成过程:
a:在第一小节末尾,我们提出了一个问题: 如果将原型对象等于另一个对象的实例,会怎样??
b:答案就是:这样的操作会形成原型链
c:原因:让当前的原型对象等于另一个对象的实例,那么,当前原型对象中就会包含一个指向另一个原型对象的指针,相应的,另一个原型中也包含着一个指向另一个构造函数的指针。
如果在上述的赋值基础上继续进行进行相同的操作,就会形成原型链。
(有点绕,可能不好理解,下面有图 帮助 理解)
2)图解原型链
a:基本的构造函数,原型对象和对象实例之间的关系
b:将Person对象的实例赋值给Teacher.prototype
上图中最后一行代码对应的图解: