手记

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

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

课程内容:

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

课程收获:

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

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

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

​​

0人推荐
随时随地看视频
慕课网APP