您现在的位置:首页 >> 前端 >> 内容

浅拷贝与深拷贝

时间:2017/5/25 9:37:00 点击:

  核心提示:1.浅拷贝var obj1 = {a : 10}function copy(obj){//浅拷贝var newObj = {};for(var attr in obj){newObj[attr] = ...

1.浅拷贝

var obj1 = {
    a : 10
}

function copy(obj){//浅拷贝

    var newObj = {};

    for(var attr in obj){
        newObj[attr] = obj[attr];
    }

    return newObj;
}

var obj2 = copy(obj1);

obj2.a = 20;

alert(obj1.a);//10

2.深拷贝

var obj1 = {
    a : {b : 10}
}

function deepCopy(obj){//深拷贝,我们使用递归的方法来实现

    //终止条件,即什么时候 obj 不是对象就可以返回了
    if(typeof obj != 'object'){
        return obj;
    }
    var newObj = {};

    for(var attr in obj){
        newObj[attr] = deepCopy(obj[attr]);
    }

    return newObj;
}

var obj2 = deepCopy(obj1);

obj2.a.b = 20;

alert(obj1.a.b);//10

作者:网络 来源:江南北