原型与原型链

1、构造函数
· 自定义构造函数(如Person)
· Function
· Array
· Object
每个使用构造函数生成的实例对象都有一个prototype属性
prototype可理解为JavaScript为每个构造函数底层实现的一套属性和方法的集合,让每个实例对象继承这一套方法集合。

2、prototype
这是函数所特有的,是函数的属性,指向一个对象

3、__proto__
每个JavaScript对象(null除外)都会有一个__proto__属性,这个属性指向该对象的原型

4、constructor
对象的原型通过constructor属性指向关联的构造函数

当读取实例的属性时,如果找不到,就会查找与对象关联的原型中的属性,如果还查不到,就去找原型的原型,一直找到最顶层为止。

5、关系图

这里可以理解为:

· 自定义的构造函数Person的prototype属性指向一个对象,这个对象就是Person的原型,由于Person.prototype是通过new Object()生成的,因而Person.prototype又通过__proto__指向Object.prototype

· Person.prototype === person.__proto__

 Person.prototype.__proto__ === person.__proto__.proto__

 

Function.__proto__ === Function.prototype

这里应该可以理解为Function其实是Object是一个实例,同时也是构造函数

 

posted @ 2017-06-09 11:17  大饼脸  阅读(178)  评论(0编辑  收藏  举报