<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>深拷贝的两种方法</title>
</head>
<body>
<script>
//JSON.stringify 简单粗暴
var origin_data = { a: 1, b: 2, c: [1, 2, 3] }
var copy_data = JSON.parse(JSON.stringify(origin_data))
origin_data.a = 3;
origin_data.b = 4;
origin_data.c[0] = '呵呵哒';
console.log(origin_data)
console.log(copy_data)
// 递归
function deepClone(source) {
const targetObj = source.constructor === Array ? [] : {}; // 判断复制的目标是数组还是对象
for (let keys in source) { // 遍历目标
if (source[keys] && typeof source[keys] === 'object') { // 如果值是对象或者数组,就递归一下
targetObj[keys] = deepClone(source[keys]);
} else { // 如果不是,就直接赋值
targetObj[keys] = source[keys];
}
}
return targetObj;
}
var origin_data = { a: 1, b: 2, c: [1, 2, 3] }
var copy_data = deepClone(origin_data)
origin_data.a = 3;
origin_data.b = 4;
origin_data.c[0] = '呵呵哒';
console.log(origin_data);
console.log(copy_data);
</script>
</body>
</html>
深拷贝的两种方法
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 壹 ❀ 引 如何区分深拷贝与浅拷贝,简单点来说,就是假设B复制了A,当修改A时,看B是否会发生变化,如果B也跟着变...
- 本文出自【听风是风】 在项目中遇到一个页面中保存的数组及对象在下个页面需要调用以及返回时第一个页面还需要用第一次生...
- 5月以来,哪怕对市场风向再不敏感的人,也感觉到阵阵凉意。二级市场连续下挫,一级市场融资环境恶化,不论企业融资数量还...