函数式
1.基础概念
函数式:使用函数来抽象对数据的处理。函数式致力于产生小的副作用,简化代码体量。表现上看,函数式是分解流程+组合流程。分解步骤表达了单一职责这一目的。组合可以让数据操作更趋向于自然语言的表达。
2.示例
1.计算平均值,使用数学进行描述的话,那么就是分为求和,求长度,除法。因此使用函数实现这几个步骤:
1 | const plus = (total, cur) => total + cur; |
函数式追求纯数据,别跟函数式谈对象,在它的范畴里,说成数值更加的合适,如果是数值的话,那么可以不用担心被纂改。那么问题来了,对于JavaScript来说,怎么实现纯对象呢?也别提const,const只是保证引用链是不可被修改的。
一般的做法是是使用Object.freeze方法来模拟不可变,但是需要记住的是Object.freeze是浅冻结,何谓浅冻结?如下所示:
1 | let obj = { a: 1, k: { b: 2 } }; |
因此,在js中,为了尽可能的实现纯的话,很可能你需要自己实现一个深冻结的方法。一层一层遍历下去,接着进行冻结。如下所示:
1 | const isObject = obj => obj && typeof obj === "object"; |
在JavaScript中,还有其它方法能够模拟数值吗?有的,如下所示:
1 | function zipCode(code, location) { |
通过上面的方式,便把_code以及_location给隐藏起来了,间接达到不可被修改的目的。