深拷贝与浅拷贝复习
Posted xiaoyuchen
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了深拷贝与浅拷贝复习相关的知识,希望对你有一定的参考价值。
引用:https://www.cnblogs.com/echolun/p/7889848.html
三种深拷贝对象的方法
- 递归拷贝key值
function deepClone(obj){ let objClone = Array.isArray(obj)?[]:{}; if(obj && typeof obj==="object"){ for(key in obj){ if(obj.hasOwnProperty(key)){ //判断ojb子元素是否为对象,如果是,递归复制 if(obj[key]&&typeof obj[key] ==="object"){ objClone[key] = deepClone(obj[key]); }else{ //如果不是,简单复制 objClone[key] = obj[key]; } } } } return objClone; }
- 借用JSON对象的JSON.stringify和JSON.parse
function deepClone(obj){ let _obj = JSON.stringify(obj), objClone = JSON.parse(_obj); return objClone }
- 借用JQ的extend方法 $.extend( [deep ], target, object1 [, objectN ] )
let a=[0,1,[2,3],4], b=$.extend(true,[],a); a[0]=1; a[2][0]=1; console.log(a,b);
以上是关于深拷贝与浅拷贝复习的主要内容,如果未能解决你的问题,请参考以下文章