首页 > Web > js 对象深度拷贝
2013
11-19

js 对象深度拷贝

最近项目碰到一个对象拷贝的问题,我需要用到前面生成的一个对象数据,通过过滤生成一个新的对象,发现不能简单的”=“,于是乎搜索了半天,终于找到一个完美方案。。。(我们都是站在巨人的肩膀上)

如下:

var a={"name":"zhangsan","id":"1001","set":[1,2,3]};
var b=a;
b.name = "lisi";
console.log(a);
console.log(b);

这个时候你会发现,我只是改变了b,a也跟着发生了改变,根本的原因是在JS中他们都指向同一内存地址(我是这么理解的,不知道是否正确,待验证);

如果我们需要修改b的时候a不发生变化怎么办呢?其实很简单:


var a={"name":"zhangsan","id":"1001","set":[1,2,3]};
var str = JSON.stringify(a);
var obj = JSON.parse(str);
var b=obj;
b.name = "lisi";
console.log(a);
console.log(b);

关于”JSON.stringify”和”JSON.parse“,请Google或者json.org了解

最后编辑:
作者:7iang
做自己