在lodash中_.extend vs _.clone

时间:2016-12-09 15:10:26

标签: javascript lodash

要在处理JavaScript对象时继承一个对象的属性,我经常会看到_.clone的用法,其目的是创建一个具有另一个对象属性的对象,然后它将被扩展。

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

请告诉我两者之间的区别以及为什么我们不能_.extend而不是_.clone这是一项代价高昂的操作。

2 个答案:

答案 0 :(得分:3)

如果"numeric"是现有对象,可以改变对象。如果你先_.extend(),原始对象保持不变。

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

_.clone()

这与_.extend({}, originalObject, { additionalProperty: "foo" }) 的浅层克隆非常相似。使用ES2015,您可以使用纯JavaScript和Object.assign()实现相同的目标。

补充阅读:

答案 1 :(得分:3)

_.extend改变对象。 _.clone创建副本,而不是参考,并且不会更改原始对象。请注意,_.extend仅是_.assignIn的别名。

  

_.assignIn(object, [sources])

     

注意:此方法会改变object

     

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

另见_.clone的文件:

  

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