js賦值,淺拷貝,深拷貝

.. 和原數(shù)據(jù)是否指向同一對象 第一層數(shù)據(jù)類型為基本數(shù)據(jù)類型 原數(shù)據(jù)中包含子對象
賦值 改變會(huì)使原數(shù)據(jù)一同改變 改變會(huì)使原數(shù)據(jù)一同改變
淺拷貝 改變不會(huì)使原數(shù)據(jù)一同改變 改變會(huì)使原數(shù)據(jù)一同改變
深拷貝 改變不會(huì)使原數(shù)據(jù)一同改變 改變不會(huì)使原數(shù)據(jù)一同改變

深拷貝:將 B 對象拷貝到 A 對象中,包括 B 里面的子對象,
淺拷貝:將 B 對象拷貝到 A 對象中,但不包括 B 里面的子對象

    var obj1 = {
        'name' : 'zhangsan',
        'age' :  '18',
        'language' : [1,[2,3],[4,5]],
    };

    var obj2 = obj1;
    var obj3 = shallowCopy(obj1);
    function shallowCopy(src) {
        var dst = {};
        for (var prop in src) {
            if (src.hasOwnProperty(prop)) {
                dst[prop] = src[prop];
            }
        }
        return dst;
    }

    obj2.name = "lisi";
    obj3.age = "20";

    obj2.language[1] = ["二","三"];
    obj3.language[2] = ["四","五"];

    console.log(obj1);  
    //obj1 = {
    //    'name' : 'lisi',
    //    'age' :  '18',
    //    'language' : [1,["二","三"],["四","五"]],
    //};

    console.log(obj2);
    //obj2 = {
    //    'name' : 'lisi',
    //    'age' :  '18',
    //    'language' : [1,["二","三"],["四","五"]],
    //};

    console.log(obj3);
    //obj3 = {
    //    'name' : 'zhangsan',
    //    'age' :  '20',
    //    'language' : [1,["二","三"],["四","五"]],
    //};
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容