js深度克隆,指的是原对象改变了,克隆出来的新对象也不会改变,原对象与新对象是完全独立的关系。
实现有两种方式
1、迭代法
<script>
// 方法一 利用迭代
// 思路是:判定要克隆的对象是不是引用类型,如果是引用类型,则继续迭代,如果该项是基本类型,则直接复制。
function deepClone(obj){
let newObj=Array.isArray(obj)?[]:{}
if(obj&&typeof obj ==="object"){
for(let key in obj){
if(obj.hasOwnProperty(key)){
newObj[key]=(obj && typeof obj[key]==='object')?deepClone(obj[key]):obj[key];
}
}
}
return newObj
}
let a=[{c:1},2,3,4],
b=deepClone(a);
a[0]={c:2};
console.log(a,b);
</script>
2、json解析法
<script>
//方法2 利用JSON对象的方法
//主要是利用JSON.stringify和JSON.parse,这种办法只能实现纯数据的克隆,如果存在function则会直接忽略,不会进行复制操作
function deepClone2(obj){
return JSON.parse(JSON.stringify(obj))
}
let a1={a: 1, b: function() {}}
b1=deepClone2(a1);
console.log(a1,b1);
</script>
网友回复
python如何调用openai的api实现知识讲解类动画讲解视频的合成?
html如何直接调用openai的api实现海报可视化设计及文本描述生成可编辑海报?
f12前端调试如何找出按钮点击事件触发的那段代码进行调试?
abcjs如何将曲谱播放后导出mid和wav格式音频下载?
python如何将曲子文本生成音乐mp3或wav、mid文件
python中mp3、wav音乐如何转成mid格式?
js在HTML中如何将曲谱生成音乐在线播放并下载本地?
python如何实现在windows上通过键盘来模拟鼠标操作?
python如何给win10电脑增加文件或文件夹右键自定义菜单?
python如何将音乐mp3文件解析获取曲调数据?