JSON

Javascript学习之浅拷贝和深拷贝详解(2)

字号+ 作者:H5之家 来源:H5之家 2017-03-19 15:00 我要评论( )

}; var o3 = deepClone(o1);console.log(o3 === o1); // = falseconsole.log(o3.obj === o1.obj); // = falseconsole.log(o2.func === o1.func); // = true 还有一种实现深拷贝的方式是利用 JSON 对象 中的 parse

};var o3 = deepClone(o1);console.log(o3 === o1); // => falseconsole.log(o3.obj === o1.obj); // => falseconsole.log(o2.func === o1.func); // => true

还有一种实现深拷贝的方式是利用 JSON对象 中的 parse  stringify JOSN对象中的stringify可以把一个js对象序列化为一个JSON字符串,parse可以把JSON字符串反序列化为一个js对象,通过这两个方法,也可以实现对象的深复制。

我们从下面的例子就可以看到,源对象的方法在拷贝的过程中丢失了,这是因为 在序列化JavaScript对象时,所有函数和原型成员会被有意忽略 ,这个实现可以满足一些比较简单的情况,能够处理JSON格式所能表示的所有数据类型,同时如果在对象中存在循环应用的情况也无法正确处理。

// 利用JSON序列化实现一个深拷贝function deepClone(source){

return JSON.parse(JSON.stringify(source));

}var o1 = {

arr: [1, 2, 3],

obj: {

key: ’value’

},

func: function(){

return 1;

}

};var o2 = deepClone(o1);console.log(o2); // => {arr: [1,2,3], obj: {key: ’value’}}

 

来源:SegmentFault

标签:

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • Asp.Net MVC Identity 2.2.1 使用技巧(八)

    Asp.Net MVC Identity 2.2.1 使用技巧(八)

    2017-03-01 18:01

  • JSON数据传输,解决中文乱码

    JSON数据传输,解决中文乱码

    2017-03-01 12:00

  • Webpack入门教程十一

    Webpack入门教程十一

    2017-02-27 11:01

  • 【Unity技巧】开发技巧(技巧篇)

    【Unity技巧】开发技巧(技巧篇)

    2017-02-22 14:00

网友点评
t