JS中的_proto_(2)

时间:2024-08-07 13:36:38
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__属性,这个用来指向该对象的构造函数