JS继承的四种方式总结
1.原型链继承
特点: 重写子类的原型对象,父类原型对象上的属性和方法都会被子类继承
存在的问题:在父类中定义的实例引用类型的属性,一旦被修改,其他的实例也会被修改
当实例化子类的时候,不能传递参数到父类
2.借用构造函数模式
特点:在子类构造函数内部间接调用(call() ,apply(), bind())父类的构造函数
原理:改变父类中的this指向
优点:仅仅的是把父类中的实例属性当做子类的实例属性,并且还能传参
缺点:父类中公有的方法不能被继承下来
3.组合继承
特点: 结合了原型链继承和借用构造函数继承的优点
原型链继承:公有的方法能被继承下来
借用构造函数:实例属性能被子类继承下来
缺点:调用了两次父类的构造函数
1.实例化子类对象
2.子类的构造函数内部
4.寄生组合式继承
Student.prototype = Object.create(People.prototype);
子类 = Object.create(父类);
把子类的原型对象指向了父类的原型对象
只要思想不滑坡,办法总比困难多!