zoukankan      html  css  js  c++  java
  • javascript中的浅复制和深复制

    //浅复制:实现基本类型的复制没有问题,但是复制的是引用类型的话,则修改child将会修改parent
    function extend(parent,child){
        var child = child || {},
            i;
        for(i in parent){
            if(parent.hasOwnProperty(i)){
                child[i] = parent[i];
            }
        }
        return child;
    }
    
    //深复制:实现基本类型和引用类型的复制,即修改child的引用类型也不会修改parent的引用类型
    function extendDeep(parent,child){
        var i,
            toStr = Object.prototype.toString,
            aStr = "[object Array]",
            child = child || {};
            for(i in parent){
                if (parent.hasOwnProperty(i)) {
                    if (typeof parent[i] === 'object') {
                        child[i] = (toStr.call(parent[i]) === aStr)?[]:{};
                        extendDeep(parent[i],child[i]);
                    } else{
                        child[i] = parent[i];
                    }
                }
            }
            return child;
    }
    
    var parent = {
        aa:{a:123,b:678}
    }
    var child = extendDeep(parent);
    console.dir(child);
    child.aa.b = 10086;
    console.table(child);
    console.table(parent);
  • 相关阅读:
    第07组 Alpha冲刺(2/4)
    第07组 Alpha冲刺(1/4)
    团队项目-需求分析报告
    团队项目-选题报告
    1381 硬币游戏
    1381 硬币游戏
    1347 旋转字符串
    1344 走格子
    1305 Pairwise Sum and Divide
    1384 全排列
  • 原文地址:https://www.cnblogs.com/qianduanjingying/p/5555786.html
Copyright © 2011-2022 走看看