码迷,mamicode.com
首页 > Web开发 > 详细

js的浅拷贝与深拷贝

时间:2018-06-24 22:34:11      阅读:175      评论:0      收藏:0      [点我收藏+]

标签:存在   没有   jquer   one   obj   ssi   引用   jquery   数据类型   

浅拷贝和深拷贝只针对对象和数组这样的数据类型,对于基本的数据类型不存在这些问题

1、浅拷贝

浅拷贝之后的对象或数组与原对象或数组指向内存中的同一个地址,改变其中任何一个,另一个也会相应的被改变

2、深拷贝

深拷贝之后的对象或数组与原对象和数组的内存地址是独立的,改变任何一个,另一个都不会受影响

数组的深拷贝

var a = [1,2,3];
var b = a.concat();//数组拼接
var c = a.slice(0);//截取数组

对象的深拷贝

手动复制,将属性一个个复制到新对象中,或使用Object.assign()该方法只能复制基本数值的属性,若属性为引用类型,则为浅复制,即这两种方法的处理深度只有一层,没有做到真正的深复制

转成JSON再转回来

var obj1 = {a:1,b:{a:11,b:22}};
var obj2 = JSON.parse(JSON.stringify(obj1))

该方法值适用于JSON格式的对象,而function没有办法转成JSON,该方法只适用于单纯的数据对象

jquery的$.extend方法

lodash中的_.cloneDeep

 

js的浅拷贝与深拷贝

标签:存在   没有   jquer   one   obj   ssi   引用   jquery   数据类型   

原文地址:https://www.cnblogs.com/lhyhappy65/p/9221819.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!