在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