浅拷贝
概念
浅拷贝是创建一个新对象,这个对象有着原始对象属性值得一份精确拷贝。如果属性是基本类型,拷贝的就是基本类型的值,如果属性是引用类型,拷贝的就是内存地址。(简单来说,浅拷贝只拷贝了第一次的值,对于引用类型二者还是会相互影响)
举例
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"]
由上例可见,改变了复制对象的引用类型属性值,被复制的对象依然被改变,说明浅拷贝只是复制对象的属性的引用,新旧对象的属性还是共用同一块内存。
常见的浅拷贝
- Object.assign()
- lodash库的_.clone()
- 展开运算符 ...
- Arrary.prototype.concat()
- Array.prototype.slice()
- 解构赋值