javaScript对每个创建的对象(或者实例对象)都会创建一个原型对象(没有 prototype属性)。
例如var arr(实例对象) = new Array() (构造函数) // 通过构造函数创建对象
arr.__proto__ == Array.prototype(原型对象) // true
使用new创建的对象还从原型上获得了一个constructor属性,指向构造函数本身
arr.constructor == Array // true
1、__proto__:每一个对象(实例对象)都有这个属性,指向创建该对象(或实例对象或原型对象)的构造函数的原型对象
2、prototype:每个构造函数都有这个属性,指向该构造函数创建的实例对象的原型对象
3、constructor:每个原型对象(或者实例对象)都有这个属性,指向创建当前原型对象(或实例对象)的构造函数
(图片来自:点击打开链接)