// 深拷贝的实现方法之一:使用 JSON.parse 和 JSON.stringify
function deepClone(obj) {
// 将对象转换为字符串,再将字符串转换回对象,实现深拷贝
return JSON.parse(JSON.stringify(obj));
}
// 示例
const originalObject = {
name: "Alice",
age: 25,
address: {
city: "Wonderland",
zip: "12345"
}
};
const clonedObject = deepClone(originalObject);
console.log(clonedObject); // 输出: { name: 'Alice', age: 25, address: { city: 'Wonderland', zip: '12345' } }
// 修改原始对象,不会影响克隆对象
originalObject.address.city = "New City";
console.log(originalObject.address.city); // 输出: New City
console.log(clonedObject.address.city); // 输出: Wonderland
// 注意:这种方法不能处理函数、undefined、Symbol、Date、RegExp 等特殊类型的值
JSON.stringify
将对象转换为字符串,JSON.parse
再将字符串转换回对象。这种方式适用于简单的对象结构。undefined
、Symbol
、Date
、RegExp
等特殊类型的值。如果需要处理这些类型,可以考虑使用递归或其他库(如 Lodash 的 _.cloneDeep
)来实现更全面的深拷贝。上一篇:js 深拷贝对象
下一篇:js apply和call的区别
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站