深拷贝和浅拷贝的异同以及实现方式

 我来答
濒危物种1718
2022-07-30 · TA获得超过1.2万个赞
知道大有可为答主
回答量:6784
采纳率:100%
帮助的人:48.3万
展开全部
相同点:

深拷贝和浅拷贝都是用于对复杂数据类型进行复制。

差异:

其区别在于深拷贝是对原数据进行递归复制,并存到一个新地址,从而使新老数据互不影响。

而浅拷贝只是对原数据的地址进行拷贝,从而会使新老数据相互影响。

常用实现方法:

深拷贝:

1.递归复制(全部适用)

function duplicate(obj) {

var newObj = null;

If(obj !== null && typeof(obj)==obj){

newObj=Obj instanceof Array?[]:{};

For (var i in obj){

newObj[i] = duplicate[i];

}

}else{

newObj = obj;

}

return newObj;

}

2.JSON.stringify(obj);

关于这个方法有一个缺点就是 不能拷贝function和undefine( 在火狐上直接报错error,而在谷歌上会直接忽略掉相关属性) 。因为这是通过把数据转化为字符串的形式赋值给一个新地址。

浅拷贝:

1.函数实现

function simpleDuplicate(obj){

Var newObj ={};

for(var I in obj){

If(obj.hasOwnProperity[i]){

newObj[i] = obj[i];

}

}

return newObj;

}

2.各种赋值、合并删除操作。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式