第一种:原型链继承:
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());