首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >cloneDeep(a)和扩展({},a)在房客中有什么区别?

cloneDeep(a)和扩展({},a)在房客中有什么区别?
EN

Stack Overflow用户
提问于 2016-02-12 15:01:40
回答 1查看 6.5K关注 0票数 0

很长一段时间我都在想

代码语言:javascript
复制
_.extend({}, obj) is the same as _.cloneDeep(obj)

在房客里。

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

请解释一下洛达什的cloneDeepextend({},有什么区别

EN

回答 1

Stack Overflow用户

发布于 2016-02-12 15:15:46

关键的区别是cloneDeep返回一个新的对象,而extend在适当的位置上变异该对象。

代码语言:javascript
复制
var a = {x: 1};
_.extend(a, {}) === a // true
_.cloneDeep(a) === a // false

在你的例子中:

代码语言:javascript
复制
_.extend({}, a) === a // false
_.cloneDeep(a) === a // false

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

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35365733

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档