函数是javascript中的一等公民,所谓一等公民就是什么都可以干,别的对象能做的它都能做,别的对象不能做的它也能做。

柯里化

柯里化又称部分求值,是把接受多个参数的原函数换成接受一个单一参数(原函数的第一个参数)的函数,并且返回一个新函数,新函数能够接受余下的参数,最后返回同原函数一样的结果。
柯里化的3个常见作用:

  • 参数复用
  • 提前返回
  • 延迟计算/运行

    反柯里化

    柯里化是固定部分参数,返回一个接受剩余参数的函数,也称之为部分计算函数,目的是为了缩小适用范围,创建一个针对性更强的函数。核心思想是把多参数传入的函数拆成单参数函数,内部再返回调用下一个单参数函数,依次处理剩余的参数。
    而反柯里化,从字面讲,意义和用法跟函数柯里化相比正好相反,扩大适用范围,创建一个应用范围更广的函数。使本来只有特定对象才适用的方法,扩展到更多的对象。
    就是在函数里

    偏函数

    偏函数是创建一个调用另一个部分的函数,函数可以根据传入的参数来生成一个真正执行的函数。其本身不包括我们真正需要的逻辑代码,只是根据传入的参数返回其他的函数,返回的函数中才有真正的处理逻辑比如
    1. const isType = function(type) {
    2. return function() {
    3. return Object.prototype.toString.call(obj) === `[object ${type}]`
    4. }
    5. }
    这样就用偏函数快速创建了一组判断类型的方法
    偏函数固定了函数的某个部分,通过传入的参数或者方法返回一个新的函数来接受剩余的参数,数量可能是一个或多个。

    继承

    对象的继承可以通过Object.create()完成

设计模式

设计原则:高内聚,低耦合,

  • 高内聚是说模块内部要高度聚合,是模块内部的关系。
  • 低耦合是说模块之间的耦合度要尽量低,是模块与模块间的关系。

    单一职责原则 SRP

    单一职责原则是指对一个类来说,应该仅有一个引起它变化的原因,也就是说,一个对象只做一件事。
    单一职责原则可以让我们对对像的维护变得简单,如果一个对象具有多个职责的话,那么如果一个职责的逻辑需要修改,势必会影响到其他职责的代码,如果一个对象具有多种职责,职责之间相互耦合,对于一个职责的修改会影响到其他职责的实现,这就是属于模块内低内聚高耦合的情况。负责的职责越多,耦合越强,对模块的修改就越来越危险。

开放封闭原则 OCP

开放封闭原则是指一个模块在扩展性方面应该是开放的,而在更改性方面应该是封闭的,也就是对扩展开放,对修改封闭。
当需要增加需求的时候,则尽量通过扩展新代码的方式,而不是修改已有的代码,因为修改已有代码,则会给依赖原有代码的模块带来隐患。