underscore.js只支持潜拷贝吗?

发布于 2022-09-01 16:06:46 字数 517 浏览 12 评论 0

var src = {
  src: 'SRC',
  test: {
    name: 'test',
    val: 0
  }
};

var dist1 = _.extend({ dist: 1 }, src);
dist1.test.name = 'test1';
dist1.test.val = 1;
console.log('src', src);
console.log('dest1', dist1);

var dist2 = _.extend({}, src);
dist2.dist = 2;
dist2.test.name = 'test2';
console.log('src', src);
console.log('dest2', dist2);

var dist3 = _.clone(src);
dist3.dist = 3;
console.log('src', src);
console.log('dest3', dist3);

运行这段代码发现,test其实是同一个引用
这样不是一不小心就会产生bug?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

2022-09-08 16:06:46

试试 Lodash,兼容underscore,并且优化了性能,同时对api进行了扩展
里面就有 _.clone() _.cloneDeep()

_.clone(value, [isDeep], [customizer], [thisArg])
_.cloneDeep(value, [customizer], [thisArg])

详见

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文