zoukankan      html  css  js  c++  java
  • javascript

    深度拷贝(三种方法):http://blog.csdn.net/flyingpig2016/article/details/52895620

        function deepCopy(obj) {
            return JSON.parse(JSON.stringify(obj));
        }
    View Code
            function deepCopy(obj){
                var newobj, obj;
                if (obj.constructor == Object){
                    newobj = new obj.constructor();
                }else{
                    newobj = new obj.constructor(obj.valueOf());//valueOf()方法返回 Array 对象的原始值
                }
                for(var key in obj){
                    if ( newobj[key] != obj[key] ){
                        if ( typeof(obj[key]) == 'object' ){
                            newobj[key] = deepCopy(obj[key]);
                        }else{
                            newobj[key] = obj[key];
                        }
                    }
                }
                newobj.toString = obj.toString;
                newobj.valueOf = obj.valueOf;
                return newobj;
            }
    View Code
    var cloneObj = function(obj){
        var str, newobj = obj.constructor === Array ? [] : {};
        if(typeof obj !== 'object'){
            return;
        } else if(window.JSON){
            str = JSON.stringify(obj), //系列化对象
            newobj = JSON.parse(str); //还原
        } else {
            for(var i in obj){
                newobj[i] = typeof obj[i] === 'object' ? 
                cloneObj(obj[i]) : obj[i]; 
            }
        }
        return newobj;
    };
    View Code
  • 相关阅读:
    C++ 中的深入浅拷贝和深拷贝
    C++ 引用小问题
    6-10
    6-8
    6-7
    6-4
    6-3
    6-1
    5-31
    COMException 依赖服务或组无法启动(0x8007042C)处理办法
  • 原文地址:https://www.cnblogs.com/gavinyyb/p/6529199.html
Copyright © 2011-2022 走看看