zoukankan      html  css  js  c++  java
  • 深度克隆一个对象的方法

    /*克隆一个对象*/

    方法一、
    Object.prototype.deepClone=function(){
      var buf;
      if (this instanceof Array) {
        buf = []; //创建一个空的数组
        var i = this.length;
        while (i--) {
          buf[i] = clone(this[i]);
        }
        return buf;
      }else if (this instanceof Object){
        buf = {}; //创建一个空对象
        for (var k in this) { //为这个对象添加新的属性
          buf[k] = deepClone(this[k]);
        }
        return buf;
      }else{
        return Obj;
      }
    }

    方法二、

    Object.prototype.deepClone=function(){

      var obj=this.constructor=='Array'?[],{};

      //var obj=(this instanceof Object)?[],{};

      for(var key in this){

        obj[key]=typeof(this[key])=='Object'?this[key].deepClone(),this[key];

      }

      return obj;

    }

    方法三、

    Object.prototype.deepClone=function() { 
        function cloneObj(){}
        cloneObj.prototype=this;     
      var obj=new cloneObj();  
      for(var o in obj){
        if(typeof(obj[o])=="object")
        obj[o]=obj[o].deepClone();
        }  
      return obj;

  • 相关阅读:
    转 Java高级程序员面试题
    发个说说0.0
    SpringMvc和servlet对比
    java面试数据类型
    java面试 关键字
    Ajax与传统Web开发的区别
    ssm框架常见问题
    浅谈C++多态性
    [转载]构造函数、析构函数可否声明为虚函数
    为什么不要在构造函数和析构函数中调用虚函数?
  • 原文地址:https://www.cnblogs.com/cdwp8/p/4040017.html
Copyright © 2011-2022 走看看