比如
function xxx(obj) {
var nobj = obj;
//dosomething.....
}var obj = {
"num":123,
"str":"string"
}xxx(obj);这样的话,xxx函数里修改nobj对象中的数据也会修改到obj对象,也就是说默认传递的是引用
我想让它传值(也就是obj的一份完全拷贝,修改nobj的数据不会影响到原obj对象)除了下面这种方法外,还有其他方法吗??function xxx(obj) {
var nobj = clone(obj);
//dosomething.....
}var obj = {
"num":123,
"str":"string"
}function clone(obj) {
var cobj = {};
for(var o in obj) {
cobj[o] = (typeof obj[o] !== "object" ? obj[o] : clone(obj));
}
return cobj;
}
xxx(obj);
function xxx(obj) {
var nobj = obj;
//dosomething.....
}var obj = {
"num":123,
"str":"string"
}xxx(obj);这样的话,xxx函数里修改nobj对象中的数据也会修改到obj对象,也就是说默认传递的是引用
我想让它传值(也就是obj的一份完全拷贝,修改nobj的数据不会影响到原obj对象)除了下面这种方法外,还有其他方法吗??function xxx(obj) {
var nobj = clone(obj);
//dosomething.....
}var obj = {
"num":123,
"str":"string"
}function clone(obj) {
var cobj = {};
for(var o in obj) {
cobj[o] = (typeof obj[o] !== "object" ? obj[o] : clone(obj));
}
return cobj;
}
xxx(obj);
var a={a:'a'}
var b = eval('('+a.toSource()+')');
a.a=123
alert(b.a)
ie下应该有其他办法
以前在51上见过一种copy副本的办法 还是借助eval 但是现在不记得了.......