var b = new Foo(20);
var c = new Foo(30);

从上图可以看出,__proto__它包含了一整条原型链包括方法属性等等,而prototype的作用则用来在new一个新对象的时候创建新对象的__proto__。
所以,一个简单的结论:
__proto__后面永远跟着对象。
prototype后面永远跟着的是函数。
( new Foo ).__proto__ === Foo.prototype
( new Foo ).prototype === undefined
另外比较正规的解释就是,显式原型(prototype)和隐式原型(proto)
参考资料
var b = new Foo(20);

var c = new Foo(30);
从上图可以看出,
__proto__它包含了一整条原型链包括方法属性等等,而prototype的作用则用来在new一个新对象的时候创建新对象的__proto__。所以,一个简单的结论:
__proto__后面永远跟着对象。prototype后面永远跟着的是函数。另外比较正规的解释就是,显式原型(prototype)和隐式原型(proto)
参考资料