要在处理JavaScript对象时继承一个对象的属性,我经常会看到_.clone
的用法,其目的是创建一个具有另一个对象属性的对象,然后它将被扩展。
为什么我们只能使用与扩展对象更相关的_.extend
?
请告诉我两者之间的区别以及为什么我们不能_.extend
而不是_.clone
这是一项代价高昂的操作。
答案 0 :(得分:3)
如果"numeric"
是现有对象,可以改变对象。如果你先_.extend()
,原始对象保持不变。
您当然可以使用原始对象的属性和一些其他属性扩展一个空对象,这也会使原始对象保持不变:
_.clone()
这与_.extend({}, originalObject, {
additionalProperty: "foo"
})
的浅层克隆非常相似。使用ES2015,您可以使用纯JavaScript和Object.assign()
实现相同的目标。
补充阅读:
答案 1 :(得分:3)
_.extend
改变对象。 _.clone
按值创建副本,而不是参考,并且不会更改原始对象。请注意,_.extend
仅是_.assignIn
的别名。
_.assignIn(object, [sources])
注意:此方法会改变
object
。
另见_.clone
的文件: