深入浅析JS中的浅层克隆与深度克隆-创新互联
深入浅析JS中的浅层克隆与深度克隆?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
目前成都创新互联已为1000多家的企业提供了网站建设、域名、网络空间、网站托管、服务器租用、企业网站设计、福绵网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。1 相关知识点
- 浅克隆就是将栈内存中的引用复制一份,赋给一个新的变量,本质上两个指向堆内存中的同一地址,内容也相同,其中一个变化另一个内容也会变化。
深克隆就是创建一个新的空对象,开辟一块内存,然后将原对象中的数据全部复制过去,完全切断两个对象间的联系。 - 区别:浅克隆和深克隆大的区别就是对引用值的处理了,即浅克隆之后你改我也改,深克隆之后你改我不改。(PS:原始值的处理一样)
- 原始值(栈数据stack):Number,Boolean(false/true),String,undefined,null
- 引用值(堆数据heap):Array,Object,function ··· Date,RegExp
2 浅层克隆
在浅层克隆中,原始值的克隆没问题,只是值的拷贝,不会出现你改我改的问题。但是引用值的克隆,就会出现你改我也改的问题,因为浅层克隆的是地址,即指向的是同一空间。
2.1 浅克隆函数
function clone(origin, target) { var target = target || {}; //容错,即防止用户不传递目标参数。若用户传递了参数就用,若没传则拿一个空对象当目标 for (var prop in origin) { target[prop] = origin[prop]; } return target; }
标题名称:深入浅析JS中的浅层克隆与深度克隆-创新互联
本文来源:http://azwzsj.com/article/dddsch.html