简述 js 实现继承有哪些方式,优缺点
时间: 2023-06-14 14:02:54 浏览: 112
在 JavaScript 中,实现继承的方式有以下几种:
1. 原型链继承:利用原型链实现继承,将子类的原型对象指向父类的实例。缺点是所有子类实例共享父类实例的属性,当父类实例属性被修改时,会影响所有子类实例。
2. 构造函数继承:在子类构造函数中使用 call 或 apply 方法调用父类构造函数,实现继承父类的属性和方法。缺点是无法继承父类原型对象上的属性和方法。
3. 组合继承:结合原型链继承和构造函数继承,既可以继承父类原型对象上的属性和方法,也可以继承父类构造函数中定义的属性和方法。缺点是会调用两次父类构造函数,造成浪费。
4. 原型式继承:通过 Object.create() 方法创建一个新对象,并将其原型对象指向父类对象,实现继承。缺点是和原型链继承一样,所有子类实例共享父类实例的属性。
5. 寄生式继承:在原型式继承的基础上,增强新对象,返回增强后的对象,实现继承。缺点和原型式继承一样。
6. 寄生组合式继承:在组合继承的基础上,优化调用父类构造函数的方式,实现继承。是最常用的继承方式。
不同的继承方式各有优缺点,需要根据实际情况选择合适的方式。
阅读全文