摘要:区别深浅拷贝主要的区别的拷贝的层级不同,浅拷贝拷贝的是一层不包括里面的引用数据类型,深拷贝的是多层实现方式浅拷贝完成后的对象如果还拷贝原型对象就删了这句深深拷贝需要判断引用数据类型,貌似还要调用递归的方式。
区别:
深浅拷贝主要的区别的拷贝的层级不同,浅拷贝拷贝的是一层不包括里面的引用数据类型,深拷贝的是多层
实现方式:浅
function shallClone (obj) { var obj_kkw = {}; // 拷贝完成后的对象 for ( var i in obj) { if(obj.hasOwnProperty(i)) { // 如果还拷贝原型对象就删了这句 obj_kkw[i] = obj[i] } } return obj_kkw; } 深:深拷贝需要判断引用数据类型,貌似还要调用递归的方式。 function deep (ori,tar) { var tar = tar || {} var tostr = Object.prototype.toString; var arrstr = "[object Array]"; for ( let prop in ori) { if(ori.hasOwnProperty(prop)) { if(ori[prop] !== null && typeof(ori[prop]) == "object") { if(tostr.call(ori[prop]) == arrstr) { tar[prop] == []; } else { tar[prop] == {}; } deep (ort[prop], tar[prop]); } else { tar[prop] == ori[prop] } } } return tar; }
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/106276.html
摘要:深拷贝相比于浅拷贝速度较慢并且花销较大。所以在赋值完成后,在栈内存就有两个指针指向堆内存同一个数据。结果如下扩展运算符只能对一层进行深拷贝如果拷贝的层数超过了一层的话,那么就会进行浅拷贝那么我们可以看到和展开原算符对于深浅拷贝的结果是一样。 JS中数据类型 基本数据类型: undefined、null、Boolean、Number、String和Symbol(ES6) 引用数据类型:...
摘要:正文讨论深浅拷贝,首先要从的基本数据类型说起根据中的变量类型传递方式,分为值类型和引用类型,值类型变量包括。当你拷贝的对象有多级的时候,就是深拷贝。数据不存在则对其拷贝。 前言: 本文主要阅读对象:对深浅拷贝印象模糊对初级前端,想对js深浅拷贝聊一聊的中级前端。 如果是对这些有完整对认知体系和解决方法的大佬,可以选择略过。 正文: 讨论深浅拷贝,首先要从js的基本数据类型说起: 根据 J...
摘要:基本数据类型的复制很简单,就是赋值操作,所以深浅拷贝也是针对,这类引用类型数据。它会抛弃对象的。另外,查资料过程中还看到这么一个词结构化克隆算法还有这一篇资料也有参考,也写得比较详细了的深浅拷贝 基本数据类型的复制很简单,就是赋值操作,所以深浅拷贝也是针对Object,Array这类引用类型数据。 浅拷贝对于字符串来说,是值的复制,而对于对象来说则是对对象地址的复制;而深拷贝的话,它不...
摘要:图数据类型图引用类型深浅拷贝问题不知道什么是深拷贝和浅拷贝的请先去并在调试台自己操作一下,这篇文章只会说明为何中会有这种问题。所以有的时候我们为了避免浅拷贝,会用一些方式实现深拷贝。 首先要了解的js基础 基本数据类型:Object、undefined、null、Boolean、Number、String、Symbol (ES6新加) Object包括: Array 、Date 、R...
阅读 3633·2021-10-11 11:09
阅读 1313·2021-09-24 10:35
阅读 3383·2021-07-29 13:48
阅读 417·2019-08-30 13:15
阅读 2480·2019-08-30 12:53
阅读 3094·2019-08-30 12:44
阅读 2666·2019-08-29 16:57
阅读 936·2019-08-29 12:26