通过比较返回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"); }
//拷贝出来数组中的对象还是共享同一内存地址
浅拷贝会创建新的对象,拷贝原对象的第一层对象的引用,
深拷贝:
深拷贝是拷贝多层,每一级别的数据都会拷贝出来