1. obj这个对象本质上是被Object函数创建的,因此obj.__proto__=== Object.prototype。我们可以用一个图来表示。

    即,每个对象都有一个__proto__属性,指向创建该对象的函数的prototype。

  2. 自定义函数的prototype本质上就是和 var obj = {} 是一样的,都是被Object创建,所以它的__proto__指向的就是Object.prototype。但是Object.prototype确实一个特例——它的__proto__指向的是null。

  3. 函数也是一种对象,函数是由Function,所以Object.__proto__ === Function.prototype

    function fn(x,y){
      return x+y;
    }
    var fn = new Function('x','y','return x+y');