在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
