当前位置: 首页 > 知识库问答 >
问题:

_扩展vs_克隆

荆鸿畅
2023-03-14

为了在处理JavaScript对象时通过另一个对象继承一个对象的属性,我经常看到使用_. clone,其目的是创建一个具有另一个对象属性的对象,然后对其进行扩展。

为什么我们不能只使用与扩展对象更相关的 _.extend

请告诉我这两者之间的区别,以及为什么我们不能_。扩展而不是_。克隆这是一个昂贵的操作。

共有2个答案

邵修诚
2023-03-14

如果你_。扩展()一个现有的对象,你改变了这个对象。如果你_。克隆()它首先,原始对象保持不变。

当然,您可以使用原始对象的属性和一些额外的属性扩展一个空对象,这也使原始对象保持不变:

_.extend({}, originalObject, {
    additionalProperty: "foo"
})

这与< code>originalObject的浅层克隆非常相似。借助ES2015,您可以使用普通JavaScript和< code>Object.assign()实现同样的目标。

延伸阅读:

    < li >为什么不变性在JavaScript中很重要?
后凯捷
2023-03-14

_。扩展改变对象_。克隆按值创建副本,而不是通过引用创建副本,并且不会更改原始对象。请注意,_。扩展只是_。分配的别名。

<代码>_。assignIn(对象,[sources])

注意:此方法会使< code>object发生变化。

https://lodash.com/docs/4.17.2#assignIn

另请参见<代码> _的文档。克隆:

https://lodash.com/docs/4.17.2#clone

 类似资料:
  • 我想制作一份扩展的副本,作为我自己扩展的基础。我如何克隆一个TYPO3扩展,以同样的行为开始我自己的扩展。我必须更改哪些文件和参数?

  • 尝试使用liquibase-mongodb扩展与夸克。没有任何成功。有谁能给我一个可行的例子吗? 所以quarkus知道liquibase,但mongodb变更集不执行。

  • 关于Quarkus,我有两个问题: > 当不使用本机模式时,quarkus可以与任何java库一起使用吗?我不明白quarkus扩展的含义,例如https://github.com/quarkiverse中为非本机图像提供的扩展。这些扩展是否只有在本机模式下使用quarkus时才需要?

  • 扩展是专门设计的在 Yii 应用中随时可拿来使用的, 并可重发布的软件包。例如, yiisoft/yii2-debug 扩展在你的应用的每个页面底部添加一个方便用于调试的工具栏, 帮助你简单地抓取页面生成的情况。 你可以使用扩展来加速你的开发过程。 信息: 本文中我们使用的术语 "扩展" 特指 Yii 软件包。而用术语 "软件包" 和 "库" 指代非 Yii 专用的通常意义上的软件包。 使用扩展

  • vscode-react-native vscode-go