let obj = { name:'AAA', age:18 } // 1,新建新对象,复制原来对象的值 let obj1 = { name:obj.name, age:obj.age } obj1.name = 'BBB' // console.log(obj); // AAA // console.log(obj1); // BBB // 2,新建对象,循环添加 let obj2 = {} for(let key in obj){ obj2[key] = obj[key] } obj2.name = 'CCC' // console.log(obj); // AAA // console.log(obj2); // CCC // 3, Object.assign() let obj3 = Object.assign({},obj) // 第一个参数目标对象要加上 obj3.name = 'DDD' console.log(obj); // AAA console.log(obj3); // DDD // 4,点语法展开 let obj4 = Object.assign({...obj}) obj4.name = 'EEE' console.log(obj); // AAA console.log(obj4); // EEE
什么是对象的浅拷贝?
简单的理解就是拷贝了对象的第一层属性,如果对象的某个属性还有第二层,第三层的数据,浅拷贝是访问不到的。
比如说某个属性的值是对象,那浅拷贝无法复制该对象的数据。