js中的继承关系,详解

it2022-05-05  208

在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

 


最新回复(0)