function extend(child, parent) { var F = function () { }; F.prototype = parent.prototype; child.prototype = new F(); child.prototype.constructor = child; } function Animal() { } Animal.prototype.sex = "Animal male"; Animal.prototype.eat = function () { console.log("animal eat"); }; Animal.prototype.sleep = function () { console.log("animal sleep"); }; function Person() { } extend(Person, Animal); //先进行原型继承 Person.prototype.sex = "Person female"; //Person的原型已指向了Animal的原型,现在给Person原型添加属性 var person1 = new Person(); console.log("person1 sex: " + person1.sex); delete Person.prototype.sex; //把Person原型中的sex属性删除掉,那么Person的实例就再往下找是否存在sex属性,在Animal的原型中 //能找到sex属性 console.log("person1 sex: " + person1.sex);
打印: Person female
Animal male
在书中看到了用这种方法进行原型继承。感觉还挺好,今天验证了一下,好用