function Animal(){
this.species = "小动物";
}
function Dog(name,age){
this.name = name;
this.age = age;
}
1/apply 构造函数绑定
function Dog(name,age){
Animal.apply(this, arguments);
this.name = name;
this.age = age;
}
var Dog1 = new Dog("狼狗","3");
alert(Dog1.species); // 小动物
2/prototype模式
Dog.prototype = new Animal();
Dog.prototype.constructor = Dog;
var Dog1 = new Dog("大毛","黄色");
alert(Dog1.species); // 动物
3/直接继承prototype
function Animal(){ }
Animal.prototype.species = "小动物";
Dog.prototype = Animal.prototype;
Dog.prototype.constructor = Dog;
var Dog1 = new Dog("哈士奇","5");
alert(Dog1.species); // 小动物
4/利用空对象作为中介
一是直接继承
var F = function(){};
F.prototype = Animal.prototype;
Dog.prototype = new F();
Dog.prototype.constructor = Dog;
二是写一个公用的继承方法
function extend(Child, Parent){
var F = function(){}
F.prototype = Parent.protptype
Child.prototype = new F()
Child.prototype.constructor = Child
Child.uber = Parent.prototype //以防万一备用
}
使用:
extend(Dog,Animal);
var Dog1 = new Dog("哈士奇","5");
alert(Dog1.species); // 小动物
5/拷贝继承
function extendBig(Child, Parent){
var p = Parent.prototype
var c = Child.prototype
for(var i in p){
c[i] = p[i]
}
c.uber = p
}
使用:
extend2(Dog, Animal);
var Dog1 = new Dog("藏獒","6");
alert(Dog1.species); // 小动物