浅拷贝主要拷贝的是对象的引用值,当改变对象的值,另一个对象的值也会发生变化。
使用 js ON.stringify和 js ON.parse实现深拷贝:JSON.stringify把对象转成字符串,再用JSON.parse把字符串转成新的对象;
缺陷:它会抛弃对象的 const ructor,深拷贝之后,不管这个对象原来的构造 函数 是什么,在深拷贝之后都会变成Object;这种方法能正确处理的对象只有 Number, String, Boolean, Array, 扁平对象,也就是说,只有可以转成JSON格式的对象才可以这样用,像function没办法转成JSON;
递归拷贝实现深拷贝,解决循环引用问题
可以利用JS中的for in语法进行处理,具体如下://要复制的原对象
var destobj={ colkey: "col", colsinfo: "NameList" }
//复制的目标对象
var myobj=new Object()
for(var om in myobj)
{
var name=om//属性名称
var value=destobj[om]//属性对应的值
myobj[name]=destobj[om]
}