创建时间:2019-10-21
更新时间:20 小时前
JSON 对象中的 parse 和 stringify 结合使用,常常被用来实现深拷贝一个对象,下面的代码实现了对对象 obj 的深拷贝:
var obj = { name: "obj" };
var objCopy = JSON.parse(JSON.stringify(obj)); // {name: "obj"}
深拷贝的一个作用就是,修改 obj 的 name 属性,不会影响 objCopy 的 name 属性。 但是这个方法不是万能的,它仍然有一定的局限性
var obj = {
func: function () {},
};
var objCopy = JSON.parse(JSON.stringify(obj)); // 最终得到 {}
var obj = {
name: undefined,
};
var objCopy = JSON.parse(JSON.stringify(obj)); // 最终得到 {}
var obj = {
reg: /abc/,
};
var objCopy = JSON.parse(JSON.stringify(obj)); // 最终得到 {reg:{}}
为了让代码更加稳健,建议使用第三方库 lodash 中的cloneDeep (opens new window)方法