1、使用call或apply绑定构造函数
animal.apply(this.arguments)
2、使用prototype属性
Cat.prototype=new Animal();
Cat.prototype.constructor=Cat;
var cat1=new Cat("大毛","黄色");
alert(cat1.species);//动物
3、直接集成prototype属性
function Animal(){}
Animal.prototype.species="动物";
Cat.prototype=Animal.prototype;
Cat.prototype.constructor=Cat;
var cat1=new Cat("大毛","黄色");
alert(cat1.species);//动物
4、利用空对象作为中介
var F=function(){};
F.prototype=Animal.prototype;
Cat.prototype=new F();
Cat.prototype.constructor=Cat;
将上面的方法封装成一个函数,便于使用:
function extend(Child.Parent){
var F=function(){};
F.prototype=Parent.prototype;
Child.prototype=new F();
Child.prototype.constructor=Child;
Child.uber=Parent.prototype;
}
5、拷贝继承
function extend2(Child.Parent){
var p=Parent.prototype;
var c=Child.prototype;
for(var i in p){
c[i]=p[i];
}
c.uber=p;
}
这个函数的作用,就是将父对象的prototype对象中的属性--拷贝给Child对象的prototype对象