function Foo1(){
this.name1 = '1';
}
function Foo2(){
this.name2 = '2';
}
Foo2.prototype = new Foo1();
function Foo3(){
this.name3 = '3';
}
Foo3.prototype = new Foo2();
var foo3 = new Foo3();
按照对上述三个构造函数和实例foo3的分析,逐步理清构造函数的prototype/_proto_/constructor和实例对象的constructor/_proto_;
foo3._proto_ = Foo3.prototype = new Foo2();
其中new Foo2()包含name2/constructor/_proto_;
new Foo2()._proto_ = Foo2.prototype = new Foo1();
其中new Foo1()包含name1/constructor/_proto_;
new Foo1()._proto_=Foo1.prototype;
Foo1.prototype._proto_等于Object;
foo3.constructor等于Foo3.prototype.constructor;
Foo3.prototype等于new Foo2();
new Foo2().constructor等于Foo2.prototype.constructor;
Foo2.prototype = new Foo1();
new Foo1().constructor = Foo1.prototype.constructor = function Foo1(){this.name1 = '1';};
end