很长一段时间我都在想
_.extend({}, obj) is the same as _.cloneDeep(obj)在房客里。
但是我发现用extend函数创建的对象具有与cloneDeep函数创建的对象不同的__proto__哈希。
请解释一下洛达什的cloneDeep和extend({},有什么区别
发布于 2016-02-12 15:15:46
关键的区别是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的克隆与自身进行比较。因此,他们可能给出相同的结果,但性质是不同的。
https://stackoverflow.com/questions/35365733
复制相似问题