JS 继承的几种方式
1. 原型链继承
function SuperType(arg) {}
function SubType(arg) {}
SubType.prototype = new SuperType()
特点
实例可继承的属性有:实例的构造函数的属性,父类构造函数属性,父类原型的属性。(新实例不会继承父类实例的属性!)
问题
- SubType 原型的引用类型属性会被所有的实例共享,这样继承原型引用类型属性的实例之间不再具有自己的独特性了。
- 在创建 SubType 的实例时,没有办法在不影响所有对象实例的情况下给 SuperType 的构造函数中传递参数。
2. 借用构造函数继承
function SuperType(arg) {}
function SubType(arg) {
SuperType.call(this,arg)
}
特点
- 只继承了父类构造函数的属性,没有继承父类原型的属性。
- 新实例可以向父类构造函数传参(this 之后)
- 可以继承多个构造函数属性(call 多个)
缺点
- 无法实现构造函数的复用。(每次用每次都要重新调用)
- 每个新实例都有父类构造函数的副本,臃肿。
3. 组合继承(常用)
function SuperType(arg) {}
function SubType(arg) {
SuperType.call(this,arg)
}
SubType.prototype = new SuperType(arg)
缺点
- 调用了两次父类构造函数(耗内存)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
上一篇: JS 数据的类型判断
下一篇: TypeScript 常见问题
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论