JavaScriptの深度コピーと浅いコピー


1:jsには参照転送のための値が割り当てられています.対像を変数に割り当てるとき、この変数が指し示すのは元の画像のアドレスです.参照はコピーです.2:深くコピーするということは、コピー対象の基本的なカテゴリではなく、元のオブジェクトの中のオブジェクトをコピーするということです.つまり完全に新しいオブジェクトが作られ、新しいオブジェクトが指すのは元のイメージアドレスではありません.
1:浅いコピー
var code={a:1,b:2}
var p=code
sone.info(p.a)/1
code.a=100
sone.info(p.a)/100
consone.info(code.a)/100
2:ディープコピー

function clone(myObj){
    //             clone    
    if(typeof(myObj) != 'object' || myObj == null) return myObj;
    var newObj = new Object();
    for(var i in myObj){
      newObj[i] = clone(myObj[i]);//                 。
    }
    return myNewObj;
}
dojoコピー関数:
function(o) {
    if (!o) {
        return o;
    }
    if (dojo.isArray(o)) {
        var r = [];
        for (var i = 0; i < o.length; ++i) {
            r.push(dojo.clone(o[i]));
        }
        return r;
    }
    if (!dojo.isObject(o)) {
        return o;
    }
    if (o.nodeType && o.cloneNode) {
        return o.cloneNode(true);
    }
    if (o instanceof Date) {
        return new Date(o.getTime());
    }
    r = new(o.constructor);
    for (i in o) {
        if (! (i in r) || r[i] != o[i]) {
            r[i] = dojo.clone(o[i]);
        }
    }
    return r;
}
var code={a:1,b:2}
var obj=clone;
code.a=100
consolie.info(obj.a)/1