zoukankan      html  css  js  c++  java
  • 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;
    }
    

      深拷贝的核心就是递归。

      

  • 相关阅读:
    顺便说说webservice
    了解c3p0,dbcp与druid
    静心己过
    慢慢来写SpringMVC基本项目
    关于druid的配置说明
    想法
    看见了别人的数据库题,随便写写
    Java 工具类
    Java 工具类
    使用JavaMail实现发送模板邮件以及保存到发件箱
  • 原文地址:https://www.cnblogs.com/smss/p/6407642.html
Copyright © 2011-2022 走看看