function Foo(){
}

上面这个函数中他是怎么创建的呢?
他是通过 Foo= new Function() 创建的,其实他也是一个对象(这里比较抽象),对又是一个对象也是一个函数,和我们平常认知不一样,但确实是这样的。
所有他拥有__proto__和prototype两种原型对象

  1. Foo函数的时候为显示原型对象:Foo.prototype
    Foo.prototype来自哪里呢?
    它其实指向自身函数, Foo.prototype===
  2. Foo对象的时候, 那么它会有一个隐式原型对象: Foo.proto
    Foo.__proto__来自哪里呢?
    来自new Function(), Foo.proto===Function.prototyoe
    Function.prototype =

图片更加清楚的理解

image.png

Q.E.D.