继承作为面向对象语言的重要特性,在js中主要是依靠原型链实现的。
下边简单说明一下构造函数、原型对象以及实例间的关系:
每个构造函数都有对应的原型对象(prototype),原型对象中包含一个指向构造函数的指针(constructor),另外还包括一些让实例共享的属性和方法,而实例中包含着指向原型对象的指针(_proto_)。当我们访问对象的属性时,先在基本属性中查找,如果没有时,再沿着_proto_向上查找,这就是原型链。 查看图示:
我们知道所有默认类型都继承了Object对象,而这个继承也是通过原型链实现的。如下图示:
根据以上可以看出,Object是这个原型链的终端,原型链的实现也是通过_proto_实现的。
希望这篇文章能够帮助大家对于原型链有一些简单的了解!