gpt4 book ai didi

javascript - lodash中的cloneDeep(a)和extend({}, a)有什么区别?

转载 作者:行者123 更新时间:2023-11-28 15:13:08 25 4
gpt4 key购买 nike

很长一段时间我都在想

_.extend({}, obj) is the same as _.cloneDeep(obj)

在洛达什。

但我发现使用 extend 函数创建的对象具有相同的 __proto__ 哈希值,与使用 cloneDeep 函数创建的对象不同。

<小时/>

请解释一下Lodash的cloneDeepextend({},之间有什么区别?

最佳答案

主要区别是 cloneDeep 返回一个新对象,而 extend 会就地改变对象。

var a = {x: 1};
_.extend(a, {}) === a // true
_.cloneDeep(a) === a // false

在您的示例中:

_.extend({}, a) === a // false
_.cloneDeep(a) === a // false

您扩展的不是a,而是空对象{}。因此,当您严格比较 _.extend({}, a)a 的结果时,您正在比较扩展的空对象。当您将 _.cloneDeep(a)a 进行比较时,您是将 a 的克隆与其自身进行比较。因此,它们可能会给出相同的结果,但性质不同。

关于javascript - lodash中的cloneDeep(a)和extend({}, a)有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35365733/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com