首页 > 代码库 > js设计模式 -- 拷贝模式
js设计模式 -- 拷贝模式
拷贝,分深拷贝和浅拷贝。
在我们了解过的框架中,jquery的$.extend()可以根据第一个传入的参数区分拷贝类型;
jQuery.extend( target [, object1 ] [, objectN ] );
-
deep类型: Boolean如果是true,合并成为递归(又叫做深拷贝)。
-
target类型: Object对象扩展。这将接收新的属性。
-
object1类型: Object一个对象,它包含额外的属性合并到第一个参数.
-
objectN类型: Object包含额外的属性合并到第一个参数
function shallowCopy(srcObj, destObj){ var destObj = destObj || {}; for(var key in srcObj){ if(!destObj.hasOwnProperty(key)){ destObj[key] = srcObj[key]; } } return destObj; }
浅拷贝只是一种简单的循环赋值,所以运行效率非常高,速度快。
function deepCopy(srcObj, destObj){ var destObj = destObj || {}; for(var key in srcObj){ if(!destObj.hasOwnProperty(key)){ if(typeof srcObj[key] == ‘object‘){ destObj[key] = (srcObj[key].constructor === Array) ? [] : {}; deepCopy(srcObj[key], destObj[key]); }else{ destObj[key] = srcObj[key]; } } } return destObj; }
深拷贝的核心就是递归。
js设计模式 -- 拷贝模式
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。