JavaScript实现深拷贝与浅拷贝
来源:互联网 发布:如何开启3724端口 编辑:程序博客网 时间:2024/06/05 15:00
深拷贝的两种实现:
1、递归深拷贝
这个函数中,申请了一块新的内存,将数组的值复制过去。
function deepCopy(source) { let result= null; if(isArrayFn(source)){ result = []; }else if(source instanceof Object){ result = {}; }else{ result = source; } for (let key in source) { //防止key遍历source原型链中的属性 if(source.hasOwnProperty(key)){ result[key] = typeof source[key]==='object'? deepCopy(source[key]): source[key]; } } return result;};
2、借助JSON实现深拷贝
JSON.stringify()被调用后,会生产一个JSON对象出来,这个JSON对象在内存中是要占空间的。
所以,相当于在一片新的内存中写入了原有的数据,所以用JSON可以实现深拷贝。
function deepCopy2(source) { if(typeof source === "object"){ return JSON.parse(JSON.stringify(source)); }}
参考文章:
js深拷贝和浅拷贝
判断一个变量是数组Array类型的方法
理解JAVASCRIPT 中hasOwnProperty()的作用
阅读全文
0 0
- Javascript浅拷贝与深拷贝实现
- Javascript浅拷贝与深拷贝实现
- JavaScript实现深拷贝与浅拷贝
- JavaScript的深拷贝与浅拷贝
- Javascript中的深拷贝与浅拷贝
- javascript浅拷贝与深拷贝
- JavaScript浅拷贝与深拷贝浅析
- JavaScript中的深拷贝与浅拷贝
- JavaScript中的浅拷贝与深拷贝
- javascript的浅拷贝与深拷贝
- 深拷贝与浅拷贝的实现
- 浅拷贝与深拷贝、以及深拷贝的实现
- JavaScript 深拷贝 & 浅拷贝
- JavaScript 实现深拷贝
- javascript prototype 浅拷贝与 深拷贝, . 号与[]号
- JavaScript对象的浅拷贝和深拷贝简单实现
- 深拷贝与浅拷贝
- 深拷贝与浅拷贝
- Python3.5 微信图片-日期命名
- 琴弦文字
- Hibernate——ManyToOne双向关联
- laravel 报错 laravel Undefined offset: 1
- Spark算子(五)
- JavaScript实现深拷贝与浅拷贝
- jquery函数总结
- 【分享】pom仓库地址
- RandomAccessFile的用法
- react学习笔记
- oracle简单操作
- ToastUtils工具类
- (转载)poi 列自适应
- 百度SEO过程中,死链链接、死链前链、锚文本、发现时间分别代表什么含义