在 JavaScript 中,常见的实现继承的方式有以下几种:
一、原型链继承:
原型链继承:通过将子类的原型对象指向父类的实例来实现继承。子类可以访问父类的属性和方法,但无法实现多继承,而且子类共享父类的属性和方法。
二、构造函数继承:
构造函数继承:在子类的构造函数中调用父类的构造函数来继承父类的属性。子类独立拥有父类的属性,但无法继承父类原型上的方法。
三、组合继承(伪经典继承):
组合继承(伪经典继承):结合了原型链继承和构造函数继承的方式。通过在子类的构造函数中调用父类的构造函数实现属性的继承,并通过将子类的原型对象指向父类的实例来实现方法的继承。这种方式既能继承父类的属性,又能继承父类原型上的方法。
四、原型式继承:
原型式继承:通过创建一个临时的构造函数,将传入的对象作为该构造函数的原型,然后返回一个新的对象作为子类的实例。这种方式类似于对象的浅拷贝,子类与父类共享原型对象上的属性和方法。
五、寄生式继承:
寄生式继承:在原型式继承的基础上,封装一个创建对象的函数,通过在函数内部增强对象,最后返回这个对象作为子类的实例。可以在增强对象的过程中添加一些额外的属性或方法。
六、寄生组合式继承:
寄生组合式继承:结合了组合继承和寄生式继承的方式。通过使用寄生式继承来继承父类的原型对象,然后将子类的原型对象指向父类的实例,实现了属性和方法的继承,同时避免了调用两次父类的构造函数。
以上是常见的几种继承方式,每种方式都有其适用的场景和特点。在选择继承方式时,需要根据实际需求和设计目标来确定最合适的方式。
更多精彩面试题请看:存图,扫