type
status
date
slug
summary
tags
category
icon
password
工具函数
工具函数在
src/util.js。find
find 接收 list 数组,f 回调函数,调用 filter 返回匹配 f 函数的第一个。deepCopy
deepCopy 函数:deepCopy 接收一个 obj 和 cache 数组作为参数,初次调用时 cache 为空数组。首先判断
obj 全等于 null 或者 obj 的类型不等于 object 就返回 obj,接下来调用 find,将 cache 和 回调传入,会使用 filter 去过滤匹配的对象,c.original 全等于当前循环的 obj 对象 ,这里判断的是一个引用地址,find 函数会返回匹配 f 函数的第一个。如果有
hit 就说明是环形结构,直接返回 hit.copy。所谓环形环形结构,就是对象之间相互引用。
接下来申明
copy 变量,如果 obj 是数组 copy 等于空数组,否则就是空对象,保存
cache:以
original 为 key, obj 为 value,将已经上面申明的 copy 变量包装成对象 push 到 cache 数组中。循环
obj keys,递归调用 deepCopy 将 obj[key] 和缓存的 cache 作为参数传入。最后将深拷贝的
copy 对象返回。forEachValue
forEachValue 接收 obj 和 fn 作为参数, 使用 Object.keys() 将 obj 转化成数组,使用 forEach 循环调用, 在 forEach 的回调函数中,会将 obj[key] key 作为参数传入 fn,循环调用 fn 函数。isObject
isObject 接收 obj 作为参数,返回 obj 不等于 null 并且 obj 的类型是 object,判断传入的对象是否是纯对象,返回 Boolean。isPromise
isPromise 接收 val 作为参数,返回有 val 并且 val 的 then 是一个 function,只是简单判断一个有没有 then 方法。assert
assert 接收 condition 和 msg 作为参数,如果 condition 取非为真,就调用 throw new Error 抛出异常。- 作者:张小手
- 链接:https://zxs-1024.cn/article/vuex-util
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
相关文章