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... "
没看懂你要做什么,但是你的逻辑有问题,因为你deepcopy里面都没有创建a,b对象
var newObj = {}; 这应该是吧?
还是不明白你想干嘛
但自己改了一下,不知道你是不是想要这样的效果
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);
@张云山: 就想弄个深拷贝函数
现在可以了,无论几级,都可以拷贝到,也可以赋值。。。。
newObj[attr] = deepcopy[attr]; 检查代码