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 许可协议,转载请注明出处。
相关文章