深拷贝与浅拷贝

2019-05-05  本文已影响0人  陈大事_code

本文将讲述一下几点

  1. 深拷贝与浅拷贝的区别。
  2. 深拷贝的常用方法

切记。只有引用类型才存在深拷贝与浅拷贝的问题哦~,基本类型是不存在这个问题的,都是完全拷贝,直接赋值即可,就是两个完全没关系的值。

区别

深拷贝常用方法

// 先将obj对象转为json字符串,然后再将json字符串转为json对象。 
let objCopy = JSON.parse(JSON.stringify(obj));

说明:其中obj与objCopy没有任何关系哦~。

// vue中环境测试
deepClone(obj) {
      let result = {}
      //for...in遍历的obj对象的键名,这点要注意与for...of的区别哦~
      for (let key in obj) {
        if (obj[key] && typeof obj[key] === "object") {
          //如果对象的属性值为object的时候,递归调用deepClone,即在吧某个值对象复制一份到新的对象的对应值中。
          result[key] = this.deepClone(obj[key]);
        } else {
          //如果对象的属性值不为object的时候,直接复制参数对象的每一个键值到新的对象对应的键值对中。
          result[key] = obj[key];
        }
      }
      return result;
    }

其中:我这边是默认是传入的对象哦~,如果存在其他类型,需要进行判断。

上一篇 下一篇

猜你喜欢

热点阅读