<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
var obj = {
name: '张三',
money: '100000w',
arr: ['房地产', '电影', '加油站'],
girl: {
name: '王晓凤',
age: 18,
height: 175
}
}
var arr = [1, 3, 5, 7, 9]
//判断数据类型
function getType(data) {
return Object.prototype.toString.call(data).slice(8, -1);
}
function deepClone(json) {
// console.log(json);
//1.判断传进来的数据类型 如果是对象创建一个新对象 如果是数组创建一个空数组 其他情况直接返回
// console.log(getType(json));
if (getType(json) == 'Object') {
var res = {};
} else if (getType(json) == 'Array') {
var res = [];
} else {
return json;
}
//2.数据在存储一次 获取每一个数据 (for-in可以遍历对象)
for (var k in json) {
// console.log(k,json[k]);
//判断存储的数据是对象还是数组 如果是数据或对象 要深拷贝
if (getType(json[k]) == 'Object' || getType(json[k]) == 'Array') {
res[k] = deepClone(json[k]);
} else {
res[k] = json[k];
}
}
//3.返回
return res;
}
console.log(deepClone(obj));
console.log(deepClone(arr));
</script>
</body>
</html>
深浅拷贝(递归拷贝)
最新推荐文章于 2024-11-04 16:17:23 发布