对象深拷贝的简单实现——JavaScript
程序员文章站
2022-06-19 15:35:58
深拷贝是相对于浅拷贝而言的,深拷贝与浅拷贝最大的不同就是对于引用类型的拷贝。浅拷贝:在修改新对象的引用类型时,原对象也会改变。(只是增加了一个指针指向已存在的内存地址)深拷贝:新对象与原对象完全独立,即修改新对象的属性时,原对象不会改变。(增加了一个指针并且申请了一个新的内存,使这个增加的指针指向这个新的内存)所以深拷贝的重点就是对于引用类型的拷贝。以下是深拷贝的简单实现:
深拷贝是相对于浅拷贝而言的,深拷贝与浅拷贝最大的不同就是对于引用类型的拷贝。
浅拷贝:在修改新对象的引用类型时,原对象也会改变。(只是增加了一个指针指向已存在的内存地址)
深拷贝:新对象与原对象完全独立,即修改新对象的属性时,原对象不会改变。(增加了一个指针并且申请了一个新的内存,使这个增加的指针指向这个新的内存)
所以深拷贝的重点就是对于引用类型的拷贝。以下是深拷贝的简单实现:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>对象深度克隆的简单实现</title>
<script>
let deepCopy = function(obj) {
//判断是数组还是对象
let newObj = obj instanceof Array ? [] : {};
for (let key in obj) {
//如果key是自身的属性,非原型上的属性。
if (obj.hasOwnProperty(key)) {
//是原始值,就赋值,否则递归
newObj[key] = typeof obj[key] === 'object' ? deepCopy(obj[key]) : obj[key];
}
}
return newObj;
};
</script>
</head>
<body>
</body>
</html>
实现效果:
本文地址:https://blog.csdn.net/ySFRaabbcc/article/details/109614796