JS 继承的几种方式

发布于 2024-09-21 14:46:19 字数 983 浏览 12 评论 0

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

小瓶盖

暂无简介

0 文章
0 评论
333 人气
更多

推荐作者

末蓝

文章 0 评论 0

年少掌心

文章 0 评论 0

党海生

文章 0 评论 0

飞翔的企鹅

文章 0 评论 0

鹿港小镇

文章 0 评论 0

wookoon

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文