JS 对象克隆

  1. Object.assign
  2. JSON.stringify
  3. 第三方库
  4. 参考

JS 没有内置直接一个克隆的 API,怎么办呢?

Object.assign

只能算 “浅复制”,因为对于引用类型,它只是以引用形式被拷贝,导致 clone 后的对象里的引用与被克隆中的引用都指向同一个对象。一次需要额外的检查进行引用类型额的赋值。

let x = { age: 99, friends: [1, 2, 3] };
let clone = Object.assign({}, x);
console.log(clone.friends === x.friends);  // true

JSON.stringify

受限于 stringify 本身的限制,一些不能在 JSON 里表示的值会被抹去。。。

  • 如果对象的属性是 undefined函数XML 对象,该属性会被 JSON.stringify() 过滤。对象属性会被直接删除掉。

第三方库

例如 lodash 的 cloneDeep

参考

  • 现代 JavaScript 教程

转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论。
我的空间