let oldObject = { name: '西施', age: 26, height: '163.30', obj: { city: '成都', street: '玉林路' }, array: ['赵雷', '嬴政', '天明'] }; // 浅克隆 -- 只能处理一层数据结构的克隆 // 深克隆 -- 可处理超过一层或多层数据结构的克隆 function clone(oldObject) { let newObject = {}; for (let key in oldObject) { newObject[key] = oldObject[key]; }; return newObject; }; // 浅浅克隆 // 引用同一个地址 let newData = oldObject; console.log(oldObject === newData); // true // 浅克隆成功 console.log(oldObject == clone(oldObject)); // false let cloneData = clone(oldObject); // 第一层可以克隆成功 cloneData.age = 30; console.log('cloneData:', cloneData.age); // 30 console.log('oldObject:', oldObject.age); // 26 // 第二层 对象 cloneData.obj.city = '杭州'; console.log('cloneData:', cloneData.obj.city); // 杭州 console.log('oldObject:', oldObject.obj.city); // 杭州 // 第二层 数组 cloneData.array[1] = '荆轲'; console.log('cloneData:', cloneData.array[1]); // 荆轲 console.log('oldObject:', oldObject.array[1]); // 荆轲
浅浅克隆和浅克隆 (clone) -- 01
关注
打赏