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);
  • 相关阅读:
    adapter 异步加载
    退出应用
    scrollview 和 edittext 焦点冲突
    判断字符串
    generate portable version cannot addon plugin(buffer var)
    在ubuntu上面安装perl
    TV
    关于xilinx ise10.1与modelsim仿真库编译
    迅雷tips
    Verilog log2 函数
  • 原文地址:https://www.cnblogs.com/qianduanjingying/p/5555786.html
Copyright © 2011-2022 走看看