使用 Lodash 克隆复制对象

发布于 2022-08-19 12:30:27 字数 1551 浏览 228 评论 0

Lodash clone() 方法是一个强大的实用程序,可用于 浅层克隆 通用对象。Object.assign() 函数或扩展运算符 是浅拷贝 POJO 的规范方法。 但 _.clone() 内置了一些附加功能,这可能使其成为您用例的更好选择。

克隆阵列

Object.assign()_.clone() 复制普通旧 JavaScript 对象(POJO)时的行为类似。 但是克隆一个数组呢?

const arr = ['a', 'b', 'c'];

// `Object.assign()` will copy all the array properties
// into a POJO
Object.assign({}, arr); // { '0': 1, '1': 2, '2': 3 }

// But `_.clone()` is smart enough to clone an array
_.clone(arr); // ['a', 'b', 'c']

克隆类的实例

另一个好处 _.clone() 是克隆的对象将具有与 ES6 类 原始对象,Object.assign() 函数总是返回一个 POJO。

class MyClass {
  constructor(val) {
    this.val = val;
  }
}

const obj = new MyClass(42);

// `Object.assign()` **always** returns a POJO. It
// doesn't actually create a new instance of the class.
Object.assign({}, obj) instanceof MyClass; // false

// `_.clone()` retains the original object's class.
_.clone(obj) instanceof MyClass; // true

另外

如果需要克隆 POJO,则不需要 Lodash。 只需使用 {...obj} 或者 Object.assign({}, obj),但 _.clone() 如果您发现自己需要克隆类实例,或者只是希望能够克隆任意对象而不检查它是否是数组,那么它会很方便。

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

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

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

0 文章
0 评论
23 人气
更多

推荐作者

遂心如意

文章 0 评论 0

5513090242

文章 0 评论 0

巷雨优美回忆

文章 0 评论 0

junpengz2000

文章 0 评论 0

13郎

文章 0 评论 0

qq_xU4RDg

文章 0 评论 0

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