JS中的_proto_(2)

function God(){}

function Foo(){
    this.name="Foo~~";
}
Foo.prototype = new God();

function Eoo(){
    this.sex = "boy";
}
Eoo.prototype = new Eoo();

 

var f1 = new Foo();
console.log(Foo.prototype);                       //    God{}
console.log(typeof Foo.__proto__);                //    function
console.log(typeof f1);                           //    object
console.log(f1.__proto__);                        //    God{}
console.log(f1.__proto__.__proto__);             //    object{}
console.log(f1.__proto__.__proto__.__proto__)    //    null

var f2 = new Eoo();
console.log(Eoo.__proto__);                       //    function(){}
console.log(Object.__proto__);                    //    function(){}
console.log(God.__proto__);                      //    function(){}
// 因为Eoo(){},Object(){},God(){}都是由函数构造出来,    Xxx.__proto__构造函数的原型对象


var f2 = new Function();
console.log(Function.prototype);     //    function(){}    f2有对象构造而来
console.log(typeof f2);              //    function
console.log(f2.__proto__);           //    function(){}    f2.__proto__===Function.prototype
console.log(f2.__proto__.__proto__)  //    object{}        f2.__proto__.__proto__===Object.prototype
console.log(f2.__proto__.__proto__.__proto__)    //    null


//    原型对象也是对象啊,它的__proto__属性,又指向谁呢,同理,指向它的构造函数的原型对象。
//    即f2.__proto__.__proto__,这里是Object.prototype.
//    JS中万物皆对象,故所有对象都有__proto__属性,这个用来指向该对象的构造函数

 


原文地址:https://www.cnblogs.com/nemoro1928/p/5393629.html