javascript对象或数组变量的赋值克隆复制

javascript中,复制一个简单的变量很简单,直接var b=a;就可以了,之后修改a或b都不会改变对方的值。

但对于对象却不是这样的,如果还是这样操作,var object_b=object_a;,你会发现改变a或b,另一个也跟着变了。

这是因为对象是传址的,var object_b=object_a;实际上是把a的地址传给了b,两个变量其实是同一个东西。

而往往我们的需求不是这样的,那就要用到对象的克隆了。

可以很简单地写一个函数达到这个目的。

function zhetenga_com_object_clone(o){

var i = {};

for(var e in o){

if(typeof o[e] == 'object')i[e] = zhetenga_com_object_clone(o[e]);

else i[e] = o[e];

}

return i;

}

这时再用var object_b=zhetenga_com_object_clone(object_a);就可以达到我们想要的结果。

2011年12月15日