JSON 实现 Javascript 对象深拷贝 clone

时间:2022-07-07 19:57:36

所有有垃圾回收的语言,都会遇到个问题, 对象的深拷贝。 可惜的是 Javascript 语言并没有在语言级别提供支持。

JSON 是 WEB中最流行的数据格式,简洁高效(比xml好),  其它如lua和ruby也学习javascript这个优点。要达到这个优势,语言必须要有足够的字面量支持(而不是像C++那样靠库实现各类结构)。

当想到要自己写一个clone方法的时候,就头大,后来想到个简洁的方式,使用JSON来做 序列化, 再反序列化,就可以生成新的对象了。

 

代码

Object.prototype.clone=function(){

       var txt=JSON.stringify(this);

       return JSON.parse(txt);

}

 

缺陷

这个实现的缺点是不能拷贝对象中的方法,而且连方法都会丢失。

chrome, firefox, safari 原生支持 JSON类, IE 6-9不支持,需要下一个 json2.js 库。