JS深拷贝的实现
栏目: JavaScript · 发布时间: 5年前
内容简介:学习js的深拷贝和浅拷贝首先要了解js的基本类型和引用类型。基本类型基本类型的数据存放在栈内存中,复制的时候是值传递,直接把5赋值给了number2
基本类型和引用类型
学习js的深拷贝和浅拷贝首先要了解js的基本类型和引用类型。
基本类型
基本类型的数据存放在栈内存中,复制的时候是值传递,直接把5赋值给了number2
var number1 = 5; var number2 = number1;
引用类型
引用类型的数据存放在堆内存中,栈内存中只存放具体的地址值,把object1赋值给object2的时候是把object1的地址值赋值给了object2,这个时候两个对象同时指向堆内存中的同一数据。
var object1 = new Object(); var object2 = object1;
深拷贝和浅拷贝的区别
深拷贝在于引用类型的时候,浅拷贝只复制地址值,实际上还是指向同一堆内存中的数据,深拷贝则是重新创建了一个相同的数据,二者指向的堆内存的地址值是不同的。这个时候修改赋值前的变量数据不会影响赋值后的变量。
深拷贝的实现
通过递归方式实现深拷贝
function deepClone(obj) { var target = {}; for(var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { if (typeof obj[key] === 'object') { target[key] = deepClone(obj[key]); } else { target[key] = obj[key]; } } } return target; }
通过json的方式实现
function (obj) { let tmp = JSON.stringify(obj); let result = JSON.parse(tmp); return result; }
以上所述就是小编给大家介绍的《JS深拷贝的实现》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- JavaScript中浅拷贝和深拷贝的区别和实现
- 实现深拷贝
- javascript系列--Object.assign实现浅拷贝的原理以及实现
- 【进阶4-4期】Lodash是如何实现深拷贝的
- 【进阶4-3期】面试题之如何实现一个深拷贝
- JavaScript深拷贝、浅拷贝
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
数据挖掘导论
(美)Pang-Ning Tan、Michael Steinbach、Vipin Kumar / 机械工业出版社 / 2010-9 / 59.00元
本书全面介绍了数据挖掘的理论和方法,着重介绍如何用数据挖掘知识解决各种实际问题,涉及学科领域众多,适用面广。 书中涵盖5个主题:数据、分类、关联分析、聚类和异常检测。除异常检测外,每个主题都包含两章:前面一章讲述基本概念、代表性算法和评估技术,后面一章较深入地讨论高级概念和算法。目的是使读者在透彻地理解数据挖掘基础的同时,还能了解更多重要的高级主题。 本书特色 ·包含大量的图表、......一起来看看 《数据挖掘导论》 这本书的介绍吧!