lodash源码之_.property

2020-11-29
阅读 2 分钟
1.9k
功能创建一个返回给定对象的 path 的值的函数。官网给的demo。 {代码...} 由此可以推断,_.property('a.b')返回的是一个取出对象的a>b属性的方法。源码 {代码...} isKey用来判断是一个property name还是property pathproperty path,lodash中定义了一个属性路径的概念,用来快速访问对象属性。{a: {b: ['data']}},希...

lodash源码之_.fill方法

2020-11-26
阅读 2 分钟
1.5k
start参数存在,不是number类型的话,(这里还有个isIterateeCall判断,后边再统一分析该方法。)设置start为0,end为数组的长度,就是填充整个数组

lodash源码-toPairs

2020-11-19
阅读 3 分钟
2.2k
功能创建一个object对象自身可枚举属性的键🈯值对数组。如果Object是map或者set,返回其条目。 {代码...} 源码实现 {代码...} 从这里来看先理解keys方法和createToPairs方法的实现。keys就是_.keys方法,功能是创建一个object自身可枚举属性名的数组 (暂时解释,接下来会写一篇keys的文章)从toPairs来看,createToPairs...

nestjs中winston日志模块使用

2020-11-19
阅读 6 分钟
12.9k
winston 日志模块winston模块介绍levels {代码...} winston.createLogger参数 {代码...} 如上代码可以创建一个Logger.参数level 默认info 只记录 小于等于info级别的日志。levels 默认``,日志的优先级别和颜色format 格式化transports 日志的输出目标,可以是文件,控制台,http服务,或者流exitOnError true ,如果设...

lodash.js源码-flatten

2020-11-09
阅读 3 分钟
2.1k
功能调用方式 {代码...} 减少一级array嵌套深度 {代码...} 数组内的成员如果是数组,那么就会被展开到,内部的元素成为上一级数组的元素。这种的功能实现起来很简单,首先入参是一个数组,返回也是一个数组 {代码...} lodash源码实现 {代码...} 通过源码,我们可以很清晰的得到flatten方法的核心功能都是由baseFlatten实...

nest中常用的swagger写法

2020-09-28
阅读 3 分钟
9.7k
SwaggerModule会查找到@Body这个装饰器来生成API文档。同样的装饰器还有@Query,@Param。至于详尽的api说明都是从PersonDTO中解析出来。

mongoose delete & winston

2020-09-25
阅读 5 分钟
1.8k
Mongoose Populatepopulate [链接]Mongoose Delete 插件功能添加了 delete() 方法。添加了 deleteById() 方法。在documents上添加了 deleted 这个属性(Boolean)添加deteledAt属性用来保存删除的时间。添加deletedBy属性来记录谁删除了document。使用restore回复已经删除的文档。批量删除和恢复。可选择是否重写静态的方...

class-validator随笔

2020-09-25
阅读 3 分钟
12k
class-validator源码地址通过自定义一个全局的validation pipe,结合class-validator来做参数校验。nest官网对class-validator一笔带过。本篇整理一些常用的方法。dto需要自行了解dto常用的IsDefined字符串类型的判断IsNumberString字符串"1",可以符合条件。数字1却不行。注意,错误的message要这么传入 {代码...} IsBo...

mongoose更新操作

2020-03-12
阅读 3 分钟
3.4k
有两张表,page与switch。page的switches维护了与switch的_id映射,是典型的一对多关系。switch表的page字段与page表的_id字段是一对一关系。

mongoose-delele使用

2020-03-10
阅读 2 分钟
2.3k
Mongoose Delete 插件 功能 添加了 delete() 方法。 添加了 deleteById() 方法。 在documents上添加了 deleted 这个属性(Boolean) 添加deteledAt属性用来保存删除的时间。 添加deletedBy属性来记录谁删除了document。 使用restore回复已经删除的文档。 批量删除和恢复。 可选择是否重写静态的方法(count, countDocuments...

lodash工具方法(三)

2018-09-06
阅读 7 分钟
2.4k
1.isArrayLike,字符串也是可以通过这个判断的。所以内部又判断是否是字符串。2。字符串的话,调用stringToArray。字符串中有区分了Unicode从而调用不同不同的方法来换成数组。

lodash的工具方法(二)

2018-08-31
阅读 7 分钟
2.3k
检查 value is an Error, EvalError, RangeError, ReferenceError,SyntaxError, TypeError, or URIError object.

_.isEqual源码学习

2018-08-28
阅读 11 分钟
6.7k
_.isEqual 比较两者的值是否相等。_.isEqualWith(value, other, [customizer]),也是比较两者的值是否相等。它还接受一个customizer

lodash的isXXX方法们 (一)

2018-08-25
阅读 7 分钟
3.8k
是否为对象 (e.g. arrays, functions, objects, regexes, new Number(0), and new String(''))

lodash的cloneDeep

2018-08-20
阅读 4 分钟
12.2k
cloneDeep 上一篇说了clone,现在说一下跟深拷贝相关的cloneDeep方法。 {代码...} {代码...} 在arrayEach中,再次用到了baseClone,已经不适合再去简化相关逻辑了。我们删除掉浅拷贝的部分。 调用如下 {代码...} 执行到了baseClone这里后, {代码...} arrayEach中 {代码...} -1中,执行了baseClone({a:1,b:2},true,true,un...

简单说一下_.clone(一)

2018-08-13
阅读 5 分钟
3.8k
clone相关的方法有4个,分别如下。 clone cloneDeep cloneDeepWith cloneWith clone是浅拷贝(shallow copy),cloneDeep是深拷贝(deep copy)。 在js中,数组或者对象这类引用类型的值,比如我有一个数组a,当我把数组a等于b的情况下,b的副本保存的是一个指向a的指针。改变其中一a或者b的值,另一个也会受到影响。 开始吧...

lodash的baseAssign方法

2018-08-12
阅读 5 分钟
1.9k
baseAssign是_.assign的基础实现。对lodash来说,它是一个private方法。priviate是私有方法,只在lodash这个库内部调用。对应的是public方法 ,_.assign就是对外暴露使用的public方法。

lodash的get方法

2018-07-11
阅读 4 分钟
31.7k
get这个方法,在lodash中是出场率很高的方法,初识起来有些疑惑,看了demo,又很直观。 get方法源码链接 下边是它的使用说明 {代码...} 根据object对象的path路径获取值。如果解析值是undefined,就返回一个默认的值(defaultValue) {代码...} 暂时不考虑第第三个参数,只考虑第二个参数,该参数的含义就是路径。 指向obj...

lodash.js源码-dropWhile

2018-05-04
阅读 3 分钟
2.3k
创建一个切片数组,去除array中从起点开始到 predicate 返回假值结束部分。predicate 会传入3个参数: (value, index, array)。

lodash源码-drop方法

2018-05-02
阅读 2 分钟
2k
写在之前 上两周精力用来重构公司的活动项目的构建了。之前很难用,使用webpack4重构之后,很安逸。代码组织也更合理了。 所以,lodash我又回来了。 使用 _.drop(array, [n=1]) 创建一个切片数组,去除array前面的n个元素。(n默认值为1。) demo {代码...} drop接收两个参数,第一个参数是一个数组,第二个参数是数字(...

lodash源码乱读-drop后的故事(toInteger,toFinite)

2018-04-18
阅读 2 分钟
1.8k
toFinite 语法 {代码...} 转换 value 为一个有限数字。 源码 {代码...} toFinite方法的的作用是转成有限的数字。至于无限是什么,无穷就是无限。 {代码...} MAX_INTEGER这个值可以通过Number.MAX_VALUE获取到,大于MAX_INTEGER代表Infinity 明确了这两点,toFinite就很简答了 {代码...} 总结一下toFinite不会返回NaN ,...

lodash源码乱读-drop后的故事(toNumber)

2018-04-18
阅读 3 分钟
2.1k
发到网络上的很可能是这篇, 编程是很抽象,很细致的一件事。 正如difference方法,有一层baseDifference的抽象。drop方法,也有一个baseXXX的方法(baseSlice)。 以base开头的函数,是一个基础的实现。一系列更具体的实现,都再这之上。 在这些基础或是具体的实现了,都不会缺少一些帮助函数,在drop中一系列的实现中,...

每天一个lodash方法-differenceWith

2018-04-12
阅读 2 分钟
6.9k
differenceWith 用法 _.differenceBy(array, [values], [iteratee=_.identity]) 作用 与difference相比,多了一个compator(我这里叫它比较器), demo 还是看官方api给的demo {代码...} 源码部分 {代码...} 第三个参数对应的是iteratee,在differenceWith传入的是undefined 下边的函数我delete掉不会执行的部分。 {代码...}...

每天一个lodash方法-differenceBy

2018-04-09
阅读 4 分钟
9.7k
便于思考,此时的differenceBy传入了三个参数array,values,iteratee,在当前代码片段已经通过arrayMap(values, baseUnary(iteratee)),已经遍历使用iteratee,返回的values更像是一个结果集。

每天一个lodash方法-difference中的优化探索

2018-04-02
阅读 7 分钟
3.3k
difference的api虽然不需要传入comparator函数,只需要传入array和values.但是_.differenceWith是基于difference的实现,

每天一个lodash方法-defference

2018-03-30
阅读 7 分钟
2.5k
该方法用到了baseReset方法。它接收的参数是一个匿名函数,匿名函数内接收两个参数,一个是array数组,另一个就是defference的两个参数

每天一个lodash方法-concat

2018-03-28
阅读 5 分钟
3.8k
腱鞘炎犯了。第三天就没坚持住,罪过罪过。 concat源码链接 功能 创建一个用任何数组 或 值连接的新数组。 使用方法 {代码...} 注意,会返回一个新数组,并且不改变传入的数组。 源码分析 源码里有100多行,显着有点乱,但是读下来,还是有很多值得思考的地方。 var MAX_SAFE_INTEGER = 9007199254740991; JS中Number类...

javascript设计模式之 发布订阅模式

2016-11-02
阅读 1 分钟
2k
{代码...} 使用 {代码...} 发布订阅模式的通用实现 修改下之前的代码 {代码...} js是一门解释之行的语言,给对象动态欠佳职责是很简单的事情 我们需要一个installEvent方法 {代码...} 需要让一个对象 有 发布订阅功能 只需要 {代码...}

单例模式

2016-11-01
阅读 3 分钟
1.3k
使用single类时,我们必须知道它是一个单例类,跟以往new出一个新对象的方式不同,这里要使用single.getInstance来获取对象。

javascript之代理模式

2016-10-27
阅读 4 分钟
3k
代理模式 代理模式(Proxy),为其他对象提供一种代理以控制对这个对象的访问。 在现实生活中,可以找到很多代理模式使用的场景。明星都有经纪人作为代理。如果请明星来演出,就要先同他的经纪人沟通,谈好相应的细节与报酬。再交给明星。 需求:公司(Company)通过经纪人(agent)找明星(start)开演唱会