该项目的 GitHub 地址为 underscore-analysis,所有文章都在这里,并将不断更新。如果你觉得我的解读还可以,对你学习 js 有一定的帮助,欢迎 Watch && Star,你的关注和肯定必定会促使我投入更多的时间和经历做好这个系列。如果你愿意的话,也欢迎 Fork,我们一起来将这个系列做好做大,一起成长。
1 _.findKey(obj, predicate, context)
遍历 obj 的属性,返回第一个满足 predicate 条件的属性的属性名
示例:
源码解读:
cb 是 underscore 的一个内部函数,在之前的文章有关迭代的两个内部函数中解读过
2 _.pick(object, oiteratee, context)
该方法会对传入的对象的键值对进行筛选,然后返回一个该对象的副本,这个副本中只包含 oiteratee 指定的键值对(白名单),而 oiteratee 可以是并列的几个字符串,也可以是包含字符串元素的一个数组,还可以是一个函数,看起来有点蒙,我们先来看例子:
示例:
源码解读:
flatten 是 underscore 的一个内部函数,接受四个参数,分别是要 拍平的(类)数组、是否浅拍平、是否在严格模式下,从第几个参数开始。这个函数会在数组方法那部分解读。
3 _.omit(obj, oiretaree, context)
该方法返回一个 obj 对象的副本,这个对象副本中保存的是 除去 oiteratee 指定的键值对后剩余的所有键值对,此时 oiteratee 指定的是 黑名单
有了 _.pick
, _.omit
的实现就变得很简单,通过 _.negate
方法对传入的 oiretaree 白名单函数取反,构成黑名单函数,然后再执行 _.pick
示例:
源码解读: