使用 Lodash 克隆复制对象
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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论