We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
本文为读 lodash 源码的第七十一篇,后续文章会更新到这个仓库中,欢迎 star:pocket-lodash
gitbook也会同步仓库的更新,gitbook地址:pocket-lodash
import castPath from './castPath.js' import toKey from './toKey.js'
《lodash源码分析之castPath》
《lodash源码分析之toKey》
baseGet 可以指定类似于这样的属性路径 a.b.c 深层取值。
baseGet
a.b.c
源码如下:
function baseGet(object, path) { path = castPath(path, object) let index = 0 const length = path.length while (object != null && index < length) { object = object[toKey(path[index++])] } return (index && index == length) ? object : undefined }
首先调用 castPath 将属性路径转换成类似于 ['a','b', 'c'] 路径数组。
castPath
['a','b', 'c']
然后循环数组,从 object 上一层一层取值。
object
如果最后 index == length,则表明取值已经到了指定的层级,直接返回取到的值 object ,否则中间取值会遇到 undefined 或者 null 的情况,这里返回 undefined。
index == length
undefined
null
署名-非商业性使用-禁止演绎 4.0 国际 (CC BY-NC-ND 4.0)
最后,所有文章都会同步发送到微信公众号上,欢迎关注,欢迎提意见:
作者:对角另一面
The text was updated successfully, but these errors were encountered:
No branches or pull requests
本文为读 lodash 源码的第七十一篇,后续文章会更新到这个仓库中,欢迎 star:pocket-lodash
gitbook也会同步仓库的更新,gitbook地址:pocket-lodash
依赖
《lodash源码分析之castPath》
《lodash源码分析之toKey》
源码分析
baseGet
可以指定类似于这样的属性路径a.b.c
深层取值。源码如下:
首先调用
castPath
将属性路径转换成类似于['a','b', 'c']
路径数组。然后循环数组,从
object
上一层一层取值。如果最后
index == length
,则表明取值已经到了指定的层级,直接返回取到的值object
,否则中间取值会遇到undefined
或者null
的情况,这里返回undefined
。License
署名-非商业性使用-禁止演绎 4.0 国际 (CC BY-NC-ND 4.0)
最后,所有文章都会同步发送到微信公众号上,欢迎关注,欢迎提意见:
作者:对角另一面
The text was updated successfully, but these errors were encountered: