深拷贝和浅拷贝

it2024-01-26  60

1、对象的浅拷贝 var obj = { name: ‘小甜甜’, age: 24, say() { console.log(11111); } }; // 浅拷贝,仅仅是指针给了另一个对象 var obj1 = obj; console.log(obj1); obj1.name = ‘小辣椒’; console.log(obj); 2、对象的深拷贝 // 1、通过json实现,会造成方法丢失 // 深拷贝:两个对象之间没有任何关系 var obj1 = JSON.stringify(obj); obj1 = JSON.parse(obj1); console.log(obj1); obj1.name = ‘小番茄’; // obj感受不到变化 console.log(obj);

// 2、通过for-in遍历循环,实现 var obj1 = {}; for (var attr in obj) { obj1[attr] = obj[attr] } console.log(obj1); obj1.say() // 修改obj1 obj1.name = '哈希'; console.log(obj); //3、使用Object.assign() var obj1 = {}; // 将obj合并到obj1上 Object.assign(obj1, obj); console.log(obj1); obj1.age = 66; console.log(obj); //4、通过...语法实现对象的深拷贝 // 对象的深拷贝 var obj = { name: '五姑娘', age: 22 }; //console.log(...obj); var obj1 = { ...obj }; // console.log(obj1); // obj1.age = 66; //console.log(obj);
最新回复(0)