在Lodash库中,有人能更好地解释merge和extend / assign吗.
这是一个很简单的问题,但答案还是让我摸不着头脑.
在Lodash库中,有人能更好地解释merge和extend / assign吗.
这是一个很简单的问题,但答案还是让我摸不着头脑.
下面是extend
/assign
的工作原理:对于source中的每个属性,将其值按原样复制到目标.如果属性值本身是对象,则不会递归遍历其属性.整个对象将从源中取出并设置到目的地.
下面是merge
的工作原理:对于source中的每个属性,判断该属性是否为对象本身.如果是,则递归地向下,try 将子对象属性从源映射到目标.所以本质上,我们将对象层次 struct 从源合并到目标.而对于extend
/assign
,它是从源到目标的简单的一级属性拷贝.
下面是一个简单的JSBin,可以让这一点非常清楚:
下面是更详细的版本,示例中也包含数组: