lodash源码分析之baseUnset
本文为读 lodash 源码的第七十五篇,后续文章会更新到这个仓库中,欢迎 star:pocket-lodash
gitbook也会同步仓库的更新,gitbook地址:pocket-lodash
依赖
import castPath from './castPath.js'
import last from '../last.js'
import parent from './parent.js'
import toKey from './toKey.js'
源码分析
baseUnset
的作用是删除 object
中,指定属性路径 path
对应的值。删除成功返回 true
。其中 path
可以是数组,也可以是属性路径字符串。
即可以是 ['a', 'b', 'c']
,也可以是 a.b.c
。
源码如下:
function baseUnset(object, path) {
path = castPath(path, object)
object = parent(object, path)
return object == null || delete object[toKey(last(path))]
}
首先调用 castPath
将属性路径规范化成数组的形式。
然后调用 parent
取出当前路径的父级的值。
如果父级的值为 null
,则表示这个属性路径下没有值,不需要删除,直接返回 object == null
,这种情况下,返回的值为 true
。
否则调用 last
取出属性路径的最后的属性,因为之前已经取出父级的值 object
,因此只需要对父级进行 delete
操作即可,也即 delete object[tokey(last(path))]
。其中 toKey
对属性进行一些规范化的转换。
License
署名-非商业性使用-禁止演绎 4.0 国际 (CC BY-NC-ND 4.0)
最后,所有文章都会同步发送到微信公众号上,欢迎关注,欢迎提意见:
作者:对角另一面