zoukankan      html  css  js  c++  java
  • 一般对象和数组对象的克隆

    function deepClone(obj){
      var newObj= obj instanceof Array?[]:{};
      for(var i in obj){
         newObj[i]=typeof obj[i]=='object'?
         deepClone(obj[i]):obj[i];
      }
      return newObj;
    }

    这种方法可以实现一般对象和数组对象的克隆,比如:

    var arr=[1,2,3];
    var newArr=deepClone(arr);
    // newArr->[1,2,3]

    var obj={
    x:1,
    y:2
    }
    var newObj=deepClone(obj);
    // newObj={x:1,y:2}

    对于正则对象RegExp

    RegExp.prototype.clone = function() {
      var pattern = this.valueOf();
      var flags = '';
      flags += pattern.global ? 'g' : '';
      flags += pattern.ignoreCase ? 'i' : '';
      flags += pattern.multiline ? 'm' : '';
      return new RegExp(pattern.source, flags);
    };

    var reg=new RegExp('/111/');
    var newReg=reg.clone();
    //newReg-> //111//

    对于Date类型:

    因为valueOf方法,日期类定义的valueOf()方法会返回它的一个内部表示:1970年1月1日以来的毫秒数.因此我们可以在Date的原型上定义克隆的方法:

    Date.prototype.clone=function(){
      return new Date(this.valueOf());
    }

    var date=new Date('2010');
    var newDate=date.clone();
    // newDate-> Fri Jan 01 2010 08:00:00 GMT+0800

  • 相关阅读:
    mac OS 截图方法
    MAC OS上JAVA1.6 升级1.7,以及 maven3.2.1配置
    maven 安装设置方法
    STemWin移植
    uIP使用记录
    define宏定义细节及uCOS中宏定义技巧
    实验室播放视频步骤
    光通信零碎知识
    论文笔记6
    OFDMA
  • 原文地址:https://www.cnblogs.com/web-chuanfa/p/11147332.html
Copyright © 2011-2022 走看看