# defaultsDeep
# Description
这个方法类似 defaults,除了它会递归分配默认属性。
# Params
(...args)
# Return
Object
# Depend
import customDefaultsMerge from './.internal/customDefaultsMerge.js'
import mergeWith from './mergeWith.js'
# Code
function defaultsDeep(...args) {
args.push(undefined, customDefaultsMerge)
return mergeWith.apply(undefined, args)
}
# Analyze
过程类似于 merge
,但是只有在属性值为 undefined
或者 没有对应的属性时,才会合并
所以这里调用 mergeWith
,本质是调用 baseMerge
,使用了自定义合并函数 customDefaultsMerge
这里 args
push
undefined
是为了参数合法化,具体可以查看 customDefaultsMerge
参数和 mergeWith
所需要的参数
# Remark
# Example
defaultsDeep({ 'a': { 'b': 2 } }, { 'a': { 'b': 1, 'c': 3 } }) // => { 'a': { 'b': 2, 'c': 3 } }