在ES5中,处理对象的浅复制和深复制是非常常见的操作。浅复制是指创建一个新对象,新对象的属性值与原对象相同,但是引用类型的属性仍然指向原对象的引用。深复制是指创建一个新对象,新对象的属性值与原对象相同,但是引用类型的属性也会被复制一份。
浅复制可以使用Object.assign()方法来实现。下面是一个示例:
var obj1 = { name: 'Alice', age: 18 }; var obj2 = Object.assign({}, obj1); console.log(obj2); // 输出:{ name: 'Alice', age: 18 }
上述代码中,我们使用Object.assign()方法将obj1复制给了obj2,此时obj2与obj1的属性值相同,但是它们是两个独立的对象。
深复制可以使用递归的方式来实现。下面是一个示例:
function deepCopy(obj) { if (typeof obj !== 'object') { return obj; } var newObj = Array.isArray(obj) ? [] : {}; for (var key in obj) { if (obj.hasOwnProperty(key)) { newObj[key] = deepCopy(obj[key]); } } return newObj; } var obj1 = { name: 'Alice', age: 18 }; var obj2 = deepCopy(obj1); console.log(obj2); // 输出:{ name: 'Alice', age: 18 }
上述代码中,我们定义了一个deepCopy()函数,通过递归的方式遍历原对象的属性,并将属性值复制到新对象中。这样就实现了对象的深复制。
本文为翻滚的胖子原创文章,转载无需和我联系,但请注明来自猿教程iskeys.com