+
95
-

js中对象深拷贝与浅拷贝的区别?

请问在js中对象深拷贝与浅拷贝的区别?

网友回复

+
15
-

例如一个对象obj1,另外一个是拷贝变量

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

var obj2 = obj1;

深拷贝:将obj1对象拷贝到obj2对象中,包括 obj1 里面的子对象,(仅仅拷贝对象本身,指针引用一下)

浅拷贝:将obj1对象拷贝到 obj2对象中,但不包括 obj1里面的子对象language(完全拷贝你和你的子子孙孙,全部复制一份放在单独的内存空间中,不是简单的指针指向)

浅拷贝示例代码:

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,["二","三"],["四","五"]],
    /...

点击查看剩余70%

我知道答案,我要回答