1.原型链继承
将父类的实例作为子类的原型
function Father(name, age) {
this.name = name;
this.age = age
};
function Son() {};
Son.prototype = new Father();
Son.prototype.constructor = Son;
优点:
1.简单易于实现
2.可以继承父类中的方法
3.实例既是父类实例也是子类实例
缺点:
1.每个实例对引用类型属性的修改都会被其他的实例共享
2.创建子类实例时,无法向父类构造函数传参
3.无法实现多继承
2.构造继承
在子类的构造函数中调用父类的构造函数
function Father(name, age) {
this.name = name;
this.age = age
};
function Son() {
Father.call(this)
};
优点:
1.每个实例对引用类型属性的修改不会被其他的实例共享
2.创建子类实例时,可以向父类构造函数传参
3.可以实现多继承
缺点:
1.只能继承父类的实例属性和方法,不能继承原型属性/方法
2.实例只是子类的实例
3.父类方法无法复用
<