赋值 、浅拷贝、深拷贝

通过比较返回true和false,判断赋值和浅拷贝的地址、内容是否一样

赋值:

      let a = [1, 2, 3];
      let b = a;
    
      if (b === a) {
        console.log("true");
      } else {
        console.log("false");
      }
        
      //true

不会开辟新的内存空间,只是赋值了对象的引用.也就是除了b这个名字之外,没有其他的内存开销,ab修改相互影响。

浅拷贝:

     //数组concat 
    let a = [1, 2, 3]; let b = a.concat(); if (b === a) { console.log("true"); } else { console.log("false"); } //false
    // 数组 slice
      let a = [1, 2, 3];
      let b = a.slice();
      if (b === a) {
        console.log("true");
      } else {
        console.log("false");
      }
   
   //拷贝出来数组中的对象还是共享同一内存地址

浅拷贝会创建新的对象,拷贝原对象的第一层对象的引用,

深拷贝:

深拷贝是拷贝多层,每一级别的数据都会拷贝出来

猜你喜欢

转载自www.cnblogs.com/aruanmei/p/12403401.html