浅拷贝

概念

浅拷贝是创建一个新对象,这个对象有着原始对象属性值得一份精确拷贝。如果属性是基本类型,拷贝的就是基本类型的值,如果属性是引用类型,拷贝的就是内存地址。(简单来说,浅拷贝只拷贝了第一次的值,对于引用类型二者还是会相互影响)

举例

const obj1 = {
    name: "sun",
    age: 18,
    favour: ["ball", "games", "study"],
    birthCity: {
        Province: "四川"
    }
}

// 浅拷贝
const obj2 = {...obj1}

obj2.favour[0] = "a"
console.info(obj1)  //  => obj1.favour = ["a", "games", "study"]

由上例可见,改变了复制对象的引用类型属性值,被复制的对象依然被改变,说明浅拷贝只是复制对象的属性的引用,新旧对象的属性还是共用同一块内存。

常见的浅拷贝

  1. Object.assign()
  2. lodash库的_.clone()
  3. 展开运算符 ...
  4. Arrary.prototype.concat()
  5. Array.prototype.slice()
  6. 解构赋值

results matching ""

    No results matching ""