<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<script>
// 深拷贝拷贝多层, 每一级别的数据都会拷贝.
var obj = {
id: 1,
name: 'andy',
msg: {
age: 18
},
color: ['pink', 'red']
};
var o = {}
// 封装函数
function deepCopy(newObj, oldObj) {
for(var k in oldObj) {
// 首先判断属于什么数据类型(要首先判断数组不是对象,因为数组也属于对象)
// 第一步:判断是否属于数组
if (oldObj[k] instanceof Array) {
newObj[k] = []
deepCopy(newObj[k], oldObj[k])
} else if (oldObj[k] instanceof Object) {
// 第二步:判断是否属于对象
newObj[k] = {}
deepCopy(newObj[k], oldObj[k])
} else {
// 第三步:判断是否属于简单数据类型
newObj[k] = oldObj[k]
}
}
}
deepCopy(o, obj)
console.log(o);
console.log('------');
o.msg.age = 20
console.log(o);
console.log(obj);
</script>
</body>
</html>
深拷贝(递归方法)
最新推荐文章于 2024-03-04 17:12:46 发布