js中如果只是用var objNew = objOld
来将一个对象赋值给另一个对象,这实际上是将objOld
的内存地址值赋值到给了objNew
,当之后objNew
对象发生的任何变化都会同样作用于objOld
对象中;
- 现在的需求是:我只想要一个和
objOld
对象内部结构及内容一模一样的对象,但是对这个新变量的任何修改操作都不会作用到objOld
对象中,具体实现代码如下:
function clone(myObj){
if(typeof(myObj) != 'object'){
return myObj;
}
if(myObj == null){
return myObj;
}
if(myObj instanceof Array){
var myNewObj = new Array();
}else{
var myNewObj = new Object();
}
for(var i in myObj){
myNewObj[i] = clone(myObj[i]);
}
return myNewObj;
};
使用时,直接像如下这样使用:
var objNew = clone(objOld); // 这里objOld是你想要复制的对象
发现一个大佬的方法既简单又方便。传送门:https://blog.csdn.net/Janus_lian/article/details/88977177