// 深拷贝函数的实现
function deepClone(obj) {
// 如果不是对象或者为null,直接返回
if (obj === null || typeof obj !== 'object') {
return obj;
}
// 初始化新对象或数组
let clone = Array.isArray(obj) ? [] : {};
// 遍历对象或数组的所有属性
for (let key in obj) {
if (obj.hasOwnProperty(key)) {
// 递归调用深拷贝函数
clone[key] = deepClone(obj[key]);
}
}
return clone;
}
// 示例代码
let originalObj = {
name: "Alice",
age: 25,
hobbies: ["reading", "swimming"],
address: {
city: "Beijing",
country: "China"
}
};
let clonedObj = deepClone(originalObj);
console.log(clonedObj); // 输出克隆后的对象
console.log(clonedObj === originalObj); // false,证明是深拷贝
console.log(clonedObj.hobbies === originalObj.hobbies); // false,证明数组也被深拷贝了
console.log(clonedObj.address === originalObj.address); // false,证明嵌套对象也被深拷贝了
deepClone
函数:这是一个递归函数,用于创建对象的深拷贝。它会遍历对象的所有属性,并对每个属性进行深拷贝。Array.isArray
判断是否为数组,确保正确地初始化新的数组或对象。deepClone
函数,确保所有嵌套的对象和数组都被深拷贝。deepClone
函数,并验证了深拷贝的效果。上一篇:js 深拷贝方法
下一篇:js 深拷贝对象
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站