首页新闻找找看学习计划

Javascript代码的小小疑问(85)——深拷贝

0
[已解决问题] 解决于 2016-07-06 15:11
function deepcopy(obj) {

    //
    if (typeof obj != 'object') {
        return obj;
    }
    //
    var newObj = {};
    for (var attr in obj) {
        newObj[attr] = deepcopy[attr];
    }
    return newObj[attr];

};

var x = {
    "a":{
        "b":"old"
    }
};

var x2 = deepcopy(x);
x2.a.b = "new";

console.log(x.a.b);  //真是奇葩,为何老提示could not read propery"a",not defined... "
Coca-code的主页 Coca-code | 初学一级 | 园豆:13
提问于:2016-06-18 11:00
< >
分享
最佳答案
0

没看懂你要做什么,但是你的逻辑有问题,因为你deepcopy里面都没有创建a,b对象

奖励园豆:5
张云山 | 小虾三级 |园豆:642 | 2016-06-24 10:05

var newObj = {}; 这应该是吧?

Coca-code | 园豆:13 (初学一级) | 2016-07-06 09:46

还是不明白你想干嘛

张云山 | 园豆:642 (小虾三级) | 2016-07-06 12:00

但自己改了一下,不知道你是不是想要这样的效果

function deepcopy(obj) {

//归
if (typeof obj != 'object') {
return obj;
}
//递
var newObj = {};
for (var attr in obj) {
newObj[attr] = deepcopy(obj[attr]);
}
return newObj;

};

var x = {
"a":{
"b":"old"
}
};

var x2 = deepcopy(x);
x2.a.b = "new";
console.log(x2.a.b);

张云山 | 园豆:642 (小虾三级) | 2016-07-06 12:01

@张云山: 就想弄个深拷贝函数

现在可以了,无论几级,都可以拷贝到,也可以赋值。。。。

Coca-code | 园豆:13 (初学一级) | 2016-07-06 15:10
其他回答(1)
0

newObj[attr] = deepcopy[attr];  检查代码

幻天芒 | 园豆:36522 (高人七级) | 2016-06-18 12:02
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册