Lodash库中,有人能更好地解释mergeextend / assign吗.

这是一个很简单的问题,但答案还是让我摸不着头脑.

推荐答案

下面是extend/assign的工作原理:对于source中的每个属性,将其值按原样复制到目标.如果属性值本身是对象,则不会递归遍历其属性.整个对象将从源中取出并设置到目的地.

下面是merge的工作原理:对于source中的每个属性,判断该属性是否为对象本身.如果是,则递归地向下,try 将子对象属性从源映射到目标.所以本质上,我们将对象层次 struct 从源合并到目标.而对于extend/assign,它是从源到目标的简单的一级属性拷贝.

下面是一个简单的JSBin,可以让这一点非常清楚:

下面是更详细的版本,示例中也包含数组:

Javascript相关问答推荐

访客柜台的风格React.js

在JavaScript中打开和关闭弹出窗口

我不明白这个react 组件有什么问题

强制执行useStatego struct 化变量[foo,setFoo]的命名约定?

*ngFor和@代表输入decorator 和选角闭合

单击子元素时关闭父元素(JS)

GrapeJS -如何保存和加载自定义页面

Angular中计算信号和getter的区别

为什么promise对js中的错误有一个奇怪的优先级?

在grafana情节,避免冲突的情节和传说

使用GraphQL查询Uniswap的ETH价格

当输入字段无效时,我的应用程序不会返回错误

当代码另有说明时,随机放置的圆圈有时会从画布上消失

有没有一种直接的方法可以深度嵌套在一个JavaScript对象中?

将Auth0用户对象存储在nextjs类型脚本的Reaction上下文中

用于测试其方法和构造函数的导出/导入类

Cherrio JS返回父div的所有图像SRC

与在编剧中具有动态价值的定位器交互

通过解构/功能组件接收props-prop验证中缺少错误"

bootstrap S JS赢得了REACT中的函数/加载