在js中继承分为两种:
1.伪类继承
2.原型链继承
1.伪类继承
Animal.apply(this,arguments)
借用构造函数来使用父类中的属性,方法。不能继承父类的构造函数原型
function Animal(name,age) {
this.name = name
this.age = age
}
function Dog(gender){
Animal.apply(this,arguments);//借用构造函数
this.gender = gender
}
var dog = new Dog('tom',3,'male');
console.log(dog instanceof Animal) //false
此处dog的构造函数不是Animal,因为是为类继承,所以Dog和Animal并不在一个原型链上。
2.原型链继承
Dog.prototype = new Animal()
将Dog的原型作为Animal的一个实例,这样就把Dog放到了Animal的原型链上了,也就可以说Dog的构造函数时Animal
function Animal(name,age) {
this.name = name
this.age = age
}
function Dog(name,age,gender){
Animal.apply(this,arguments);
this.gender = gender
}
Dog.prototype = new Animal() //实例
var dog = new Dog('tom',3,'male');
console.log(dog instanceof Animal)//true