前言
快节奏的世界, 大家都想要快, 因此我把构造函数与原型链分文章说明.
想具体了解构造函数与原型, 原型链之间的关系可以结合另一篇文章
构造函数和原型及两者作用
本文章说明原型链中的关系
构造函数, 函数原型与实例对象原型的关系 -- 图解
构造函数, 原型对象与对象原型的关系
定论:
任何对象必有__ proto __属性.(包括简单类型对象, var i=1;)
特例:(Object.prototype 属性对象)和 (Object 对象. proto 属性对象) 没有 proto 属性.
任何函数必有 prototype 原型对象
此时, 由第一个定论, 函数的原型对象一定存在 __ proto __属性, 那么在原型链里面, 存在一个 Object 函数, 而函数的原型对象的 __ proto __指向的是 Object 函数对象的 prototype
Person.prototype.__ proto __===Object.prototype
由因为 Object.prototype 是 Object 的原型对象, 因此它的 construtor 指向 Object 本身, 即
Object.prototype.construtor===Object
而同时 Object 的原型对象又符合第一个结论的特例, 即 Object.prototype.__ proto __不存在 proto 属性, 指向的是空(null)
下图为完整的原型链:
原型链关系图
执行顺序
就近原则: 在查找方法的时候, 如果执行实例对象方法, 则先查找 this 的方法; 后通过原型链中 __ proto __的线路逐步查找, 直到找到为止.
来源: http://www.jianshu.com/p/3582f8ef8ef5