__proto__ 是对象才具有的一个属性,用来暴露内部的prototype。因为js中字面量对象都是 new Object() 函数创建的 对象字面量的内部就是Object,所以js中: 字面量对象.__proto__=== Object.prototype
而将prototype作为属性(原型对象)是(构造)函数独有的。对象虽然没有prototype属性,但是可以通过__proto__暴露内部自己本来就有的prototype
需要注意的是 js中的 Function 也是对象 。 Function.__proto__ != Funtion.prototype 因为一个是内部的prototype 一个是原型对象prototype