prototype随记

1.什么是prototype

1. 每个函数都能构建出一个对象, 这个对象内部有个属性指向着这个函数的原型对象;
2. 原型对象本质也是一个对象,也是由另外一个构造函数构造出来, 也指向那个构造函数的原型对象;
按照我本人的理解,任何构造函数(注意是函数,并非对象)都存在原型对象,并且prototype指针指向这个原型对象,如下图所示

prototype随记
我们自定义的构造函数Person,构造函数Person的prototype指向了其原型对象,原型对象中默认存在一个constructor属性。
此处牢记:
原型对象就是一个对象(如:var o={})

2.数组的完整原型链

prototype随记
上图为内置函数Array的简单原型链图
1.首先我们定义var arr=[ ],(即构造函数Array的实例),其__proto__指向构造函数的原型对象,这个不难理解。
2.由图中可以看到,构造函数Array又是由构造函数Function实例化出来的,因此,构造函数Array的__proto__又指向Function的原型对象。

3.内置对象完整原型链

prototype随记
看图吧,不知道怎么解释了…