面向对象的继承,js实现继承的几种方式
JS的继承方式:
1.原型链继承,(缺点是使用同一个内存地址,在一个构造函数中创建两个实例,则会指向同一个内存地址)
2.使用构造函数继承(借助call)(缺点是不能继承父类自己定义的方法,只能继承实例属性和方法,不能继承原型属性和方法)
function Parent() { this.name = 'parent' } Parent.prototype.getName = function() { return this.name } function Child() { Parent.call(this)// 绑定this this.age = 23 } let child = new Child() console.log(child.getName())// 会报错,不能继承原型链上的方法
3.组合继承(前两个方式的组合)
4.原型式继承(使用object.create)
5.寄生式继承
6.寄生组合继承(这些方法还不是很明白,等完善)
7.extends关键字,(类似于寄生组合继承)