在了解原型链之前,我们首先理解几个概念:
JavaScript内置对象
所谓的内置对象 指的是:JavaScript本身就自己有的对象 可以直接拿来就用。例如Array String 等等。JavaScript一共有12内置对象
函数构造器对象(10个):它们都有
__proto__和prototype属性,typeof"function"
String、Number、Boolean、Array、Function、Date、RegExp、Error、Object、Event
其他对象:它们只有
__proto__属性,typeof"object"
Math、JSON
原型(prototype),原型指针(__proto__),原型链,构造器指针(constructor)
原型
(prototype)- 所有函数都有一个
prototype(原型)属性,属性值是一个普通的对象
原型链:
在
javascript中,每个函数都会初始化一个属性,原型(prototype),当我们需要访问这个函数的某个属性时,就会去到prototype中寻找这个属性,若没有找到这个属性,prototype中也存在自己的prototype,于是乎就这样一直往上查找。
当访问一个对象的某个属性时,会先在这个对象本身属性上查找,如果没有找到,则会去它的__proto__隐式原型上查找,即它的构造函数的prototype,如果还没有找到就会再在构造函数的prototype的__proto__中查找,这样一层一层向上查找就会形成一个链式结构,我们称为原型链。
原型指针
(__proto__):指向构造该对象的构造函数的原型
(prototype)
构造器指针
(constructor):
prototype中有一个constructor属性,这个属性的值就是指向原型的构造器(构造函数)
为了便于理解我画了一张图:

实例图解

https://www.cnblogs.com/syomm/p/5942165.html
https://www.cnblogs.com/dominik/articles/10301449.html
https://www.cnblogs.com/douglasryan/p/10461866.html
https://www.cnblogs.com/yan-yubo/p/Javascript-built_in_objects.html