引
所有有垃圾回收的语言,都会遇到个问题, 对象的深拷贝。 可惜的是 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 库。