第一种:原型链继承:
function Animal(){this.property="都要呼吸";}
Animal.prototype.getProperty = new function(){return this.property;}
function Person(){this.feature="直立行走";}
Person.prototype = new Animal();
Person.prototype.getFeature = function(){return this.feature;}
var p1 = new Person();
console.log(p1.getProperty());
console.log(p1.getFeature());
第二种:借用构造函数继承:
function Animal(){this.property="都要呼吸"; this.getProperty=function(){return this.property;};}
function Person(){Animal.call(this);this.feature="直立行走";}
Person.prototype.getFeature = function(){return this.feature;}
var p1 = new Person();
console.log(p1.getProperty());
console.log(p1.getFeature());
第三种:组合继承:(最常用的继承模式)
function Animal(){this.property="都要呼吸";}
Animal.prototype.getProperty = function(){return this.property;};
function Person(){Animal.call(this);this.feature="直立行走";}
Person.prototype = new Animal();
Person.prototype.constructor = Person;
Person.prototype.getFeature = function(){return this.feature;};
console.log(Person.getProperty());
console.log(Person.getFeature());
第四种:原型式继承
var animal = {property: "都要呼吸"; getProperty: function(){return this.property;}};
function person(animal){function Person(){this.feature="直立行走";} Person.prototype=animal; Person.prototype.getFeature(){return this.feature;} return new Person();};
var p1 = person(animal);
console.log(p1.getProperty());
console.log(p1.getFeature());
ECMAScript 5通过新增Object.create()方法规范化了原型式继承。
var animal = {property: "都要呼吸"; getProperty: function(){return this.property;}}
var p1 = Object.create(animal, {feature: {value: "直立行走"}, getFeature: {value: function(){return this.feature;}}});
console.log(p1.getProperty());
console.log(p2.getFeature());
第五种:寄生式继承
var animal = {property: "都要呼吸"; getProperty: function(){return this.property;}};
function person(animal){var p1 = Object.create(animal, {feature: {value: "直立行走"}}); p1.getFeature = function(){return this.feature;}; return p1;}
var p1 = person(animal);
console.log(p1.getProperty());
console.log(p1.getFeature());
第六种:寄生组合式继承
function Animal(){this.property="都要呼吸";}
Animal.prototype.getProperty=function(){return this.property;}
function Person(){Animal.call(this);this.feature="直立行走";}
function inheritPrototype(Person, Animal){var person=Object.create(Animal.prototype); person.constructor=Person; Person.prototype=person;}
inheritPrototype(Person, Animal);
Person.prototype.getFeature=function(){return this.feature;}
var p1 = new Person();
console.log(p1.getProperty());
console.log(p1.getFeature());