• 所有的函数都有 prototype 属性
  • 虽有的对象都有 proto 属性
  • prototype 讲的是上一层的关系,也就是原型,而 proto 讲的是下一层的关系,也就是派生或者衍生出的对象所拥有的。

Foo.prototype 是为 Foo 的下一级使用的, 而 Foo.proto 是 Foo 引用的上一级。 Foo 是谁 new 出来的,谁就是 Foo 的上一级;Foo new 出来谁,谁就是 Foo 的下一级。这就是 Foo.prototype 和 Foo.proto 的区别。

  • 其他关于二者的区别,还有 Foo.prototype 是显式的属性,而 proto 是隐式的属性。
  • 所有的 proto 都指向的是 prototype。