1.new 创建了一个新对象,这样就避免了设置Person.prototype.constructor = Person 的时候也会导致Animal.prototype.constructor的值变为Person,而是动态给这个新创建的对象一个constructor实例属性。这样实例上的属性constructor就覆盖了Animal.prototype.constructor,这样Person.prototype.constructor和Animal.prototype.contructor就分开了。
2.Animal自身的this对象的属性没办法传递给Person
但是像下面这样直接调用构造函数又可能失败,或者产生其他影响。
Person.prototype =newAnimal();
为了避免这种情况,所以我们引入了一个中间函数。所以正确的做法应该是
Person.prototype =(funtion(){ function F(){}; F.prototype =Animal.prototype returnnew F(); })()