JS实现深拷贝,浅拷贝的方法

在 JS 中,函数和对象都是浅拷贝(地址引用);其他的,例如布尔值、数字等基础数据类型都是深拷贝(值引用)。

深拷贝

  1. JSON.parse(JSON.stringify(src)):这种方法有局限性,如果属性值是函数或者一个类的实例的时候,无法正确拷贝
  2. 借助第三方库:jq 的extend(true, result, src1, src2[ ,src3])、lodash 的cloneDeep(src)
  3. 借助 HTML5 的MessageChannel:这种方法有局限性,当属性值是函数的时候,会报错
  4. 手动做一个“完美”的深拷贝函数:https://godbmw.com/passages/2019-03-18-interview-js-code/

浅拷贝

  1. ES6 的 Object.assign()
  2. ES7 的...解构运算符
posted @ 2019-08-21 11:32  小蜗蜗蜗牛^o^  阅读(402)  评论(0编辑  收藏  举报