为了账号安全,请及时绑定邮箱和手机立即绑定

【金秋打卡】第5天 从函数到函数式编程之路

标签:
JavaScript

课程名称:破解JavaScript高级玩法
课程章节:第6章 从函数到函数式编程之路
主讲老师:Cloud

课程内容:

今天学习的内容包括:
6-7 组合和继承,谁与争锋——使用好组合和继承,工作中可以复用模块,节省时间。

课程收获:

组合(has -a关系)
  • 在一个类/对象内使用其他的类/对象。
  • has-a:包含关系,体现的是整体和部分的思想。
  • 黑盒复用:对象的内部细节不可见。知道怎么使用就可以了
组合的优点
  • 功能相对独立,松耦合
  • 扩展性好
  • 符合单一职责,复用性好
  • 支持动态组合,即程序运行中组合
  • 具备按需组装的能力
组合的缺点
  • 使用上相比继承,更加复杂一些
  • 容易产生过多的类/对象
继承( is - a 关系)
  • 继承是is-a的关系,比如人是动物
  • 白盒复用:你需要了解父类的实现细节,从而决定怎么重写父类的方法
继承的优点
  • 初始化简单,子类自动具备父类的能力
  • 无需显式初始化父类
继承的缺点
  • 继承层级多,会导致代码混乱,可读性变差
  • 耦合紧
  • 扩展性相对组合较差
组合和继承的最终目的
  • 当然是逻辑复用,代码复用
多态
  • 事物在运行过程中存在不同的状态
  • 多态形成条件:需要有继承关系、子类重写父类的方法、父类指向子类
何时使用谁
  • 有多态的需求的时候,考虑使用继承
  • 如果有多重继承的需求,考虑使用组合
  • 既有多态又有多重继承,考虑使用继承+组合
ES5的继承方式
  • 原型链继承
  • 构造函数继承
  • 原型式继承
  • 组合继承
  • 寄生式继承
  • 寄生组合继承
寄生组合继承解决的问题
  • 各个实例的属性独立,不会发生修改一个实例,影响另外—个实例
  • 实例化过程中没有多余的函数调用
  • 原型上的constructor属性指向正确的构造函数
继承的一种变体
  • mixin:混入
  • 把属性拷贝到原型,让其实例也有相应的属性
ES6继承注意点
  • 构造函数this使用前,必须先调用super方法
  • 注意箭头函数形式的属性
  • class若是想在原型上添加非承数的属性还但依赖prototype

今天 学习了 组合和继承,再次理解了组件和继承之间的关联和差异,基础知识还是要了解的。对自己说一句,加油😀~

坚持打卡,坚持学习!明天见💪~

​​
https://img1.sycdn.imooc.com//635b378e0001054323861358.jpg

https://img1.sycdn.imooc.com//635b469b0001c12223931357.jpg

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消