浅拷贝:浅拷贝拷贝的是对象的一层属性 如果对象里面还有对象则拷贝的是复杂数据类型的地址 浅拷贝一般使用Object.assign(给谁,拷贝谁){...对象名}
深拷贝:深拷贝拷贝的是对象的多层属性 如果对象里面还有对象 则继续拷贝 一般我们使用递归、lodash/cloneDeep或者是Json.stringify来实现
<body> <script> const obj = { uname: "张三", age: 18, family: { baby: "小阿三", }, }; /* 浅拷贝:拷贝对象的一层属性 如果对象里面还有对象(复杂数据类型)则拷贝的是地址 两者之间会相互影响 浅拷贝只适用于简单数据类型 深拷贝:拷贝对象的多层属性 如果对象里面还有对象 则继续拷贝 一般使用递归、lodash/cloneDeep或者Json,stringify()来实现 */ // 方法一:浅拷贝 Object.assign(给谁,拷贝谁) // let newObject = {}; // Object.assign(newObject, obj); // newObject.uname = "ll"; //改名 // console.log(newObject); //这里拷贝出来的方法是一个地址 // console.log(obj); //原对象里面的属性值没有被修改 // newObject.family.baby = "大阿三"; // console.log(newObject); // console.log(obj); //原对象里面的方法也会被修改 // 方法2:浅拷贝 {...对象名} const o = { ...obj }; // 原数据中的方法的值(复杂数据类型)又被修改了 o.family.baby = "复杂数据类型浅拷贝拷贝的是地址"; console.log(obj); </script> </body>
标签:obj,log,对象,数据类型,newObject,拷贝,方法 From: https://www.cnblogs.com/JAG2671169285/p/16929495.html