// 浅拷贝示例代码
// 方法1: 使用 Object.assign()
let obj1 = { a: 1, b: { c: 2 } };
let obj2 = Object.assign({}, obj1);
console.log(obj2); // { a: 1, b: { c: 2 } }
// 修改 obj2 的属性
obj2.a = 10;
console.log(obj1.a); // 1 (obj1 的 a 属性没有被修改)
console.log(obj2.a); // 10
// 修改 obj2 中的嵌套对象属性
obj2.b.c = 20;
console.log(obj1.b.c); // 20 (obj1 中的嵌套对象也被修改了,因为是浅拷贝)
// 方法2: 扩展运算符 (...)
let obj3 = { ...obj1 };
console.log(obj3); // { a: 1, b: { c: 2 } }
// 修改 obj3 的属性
obj3.a = 100;
console.log(obj1.a); // 1 (obj1 的 a 属性没有被修改)
console.log(obj3.a); // 100
// 修改 obj3 中的嵌套对象属性
obj3.b.c = 200;
console.log(obj1.b.c); // 200 (obj1 中的嵌套对象也被修改了,因为是浅拷贝)
// 解释说明:
// 浅拷贝只会复制对象的第一层属性,对于嵌套的对象或数组,它只是复制了引用。
// 因此,当修改嵌套对象或数组时,原始对象和拷贝对象会共享相同的引用,导致同时被修改。
上一篇:js 深拷贝
下一篇:js apply和call的区别
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站