深拷⻉浅拷⻉的区别?什么是深拷⻉浅拷⻉
深拷⻉浅拷⻉的区别?如何实现⼀个深拷⻉?
JavaScript 中存在两⼤数据类型:
- 基本类型
- 引⽤类型
基本类型数据保存在在栈内存中
引⽤类型数据保存在堆内存中,引⽤数据类型的变量是⼀个指向堆内存中实际对象的引⽤,存在栈中
浅拷⻉
浅拷⻉,指的是创建新的数据,这个数据有着原始数据属性值的⼀份精确拷⻉
如果属性是基本类型,拷⻉的就是基本类型的值。如果属性是引⽤类型,拷⻉的就是内存地址
即浅拷⻉是拷⻉⼀层,深层次的引⽤类型则共享内存地址
下⾯简单实现⼀个浅拷⻉
在 JavaScript 中,存在浅拷⻉的现象有:
1. Object.assign
2. rray.prototype.slice() , Array.prototype.concat()
3. 使⽤拓展运算符实现的复制
深拷⻉
深拷⻉开辟⼀个新的栈,两个对象属完成相同,但是对应两个不同的地址,修改⼀个对象的属性,不会
改变另⼀个对象的属性
常⻅的深拷⻉⽅式有:
1. _.cloneDeep()
2. jQuery.extend()
3. JSON.stringify()
4. ⼿写循环递归
JSON.stringify(JSON.parse())
但是这种⽅式存在弊端,会忽略 undefined 、 symbol 和 函数
深拷⻉浅拷⻉的区别?什么是深拷⻉浅拷⻉相关推荐
- JavaScript之浅复制【拷贝】与深复制【拷贝】【二】
下面了解下什么浅复制[拷贝]和深复制[拷贝],通过下面的阅读你将了解到: 1.什么是浅复制以及使用场景 2.什么是深复制以及使用场景 3.浅复制和深复制有哪些方式 复制代码 一.我们先来了解下,Jav ...
- python学习 - copy模块的浅复制(copy)与深复制(deepcopy)
python学习 - copy模块的浅复制(copy)与深复制(deepcopy) 简介 copy.copy()详解 copy.deepcopy()详解 简介 在使用列表或者字典进行传递参数的时候,可 ...
- 深蹲的26种变化动作(深蹲大全)
深蹲是练大腿的王牌动作.而深蹲恰好是最需要大肺活量和强健心脏的动作.深蹲的分类有很多,我们在健身房当中可以根据杠铃放置的不同, 深蹲可分为前深蹲.后深蹲和支撑蹲三种,要求各不相同,深蹲怎么做. 深蹲, ...
- 深蹲不必天天做,天天做深蹲对于膝盖损伤有一定的影响,可以深蹲一天休息2天,但是贵在坚持!
深蹲不必天天做,天天做深蹲对于膝盖损伤有一定的影响,可以深蹲一天休息2天,但是贵在坚持!
- 【面试题】深复制与浅复制的区别
目录 浅复制 深复制 浅复制 被复制对象的所有变量都含有与原来对象相同的值,而所有其他对象的引用仍然指向原来的对象.换言之,浅复制仅仅复制所考虑的对象,而不复制它所引用的对象. 深复制 被复制对象的所 ...
- numpy的深复制与浅复制的区别_Python之Numpy基础,强大到让你五体投地
以前总认为Numpy是渣渣,直到深入接触以后才知道功能这么强大.堪比Matlab啊.果然是人生苦短,我用Python,所以本文作为一个记录&笔记,文章内容大多数取自网络以&官网快速入门 ...
- numpy的深复制与浅复制的区别_浅谈数据备份与复制对于企业用户的区别
随着服务器海量数据的不断增长,数据的体积变得越来越庞大.同时,各种数据的安全性和重要程度也越来越被人们所重视.对数据备份的认同涉及到两个主要问题,一是为什么要备份,二是为什么要选择磁带作为备份的介质. ...
- 不同大小硬盘对拷oracle,如何实现硬盘对拷_大小不一样的硬盘怎么实现对拷?_不同大小硬盘对拷...
进行硬盘对拷时,经常会遇见两个硬盘大小不一样的情况,怎样才能完美的,实现大小不一样的硬盘对拷成功呢?傲梅轻松备份,分区助手软件都是很好用的,硬盘拷贝工具,帮您松搞定大小不一样硬盘对拷 软件名称:轻松备 ...
- 不同大小硬盘对拷oracle,大小不一样的硬盘怎么实现对拷?
进行硬盘对拷时,经常会遇见两个硬盘大小不一样的情况,怎样才能完美的,实现大小不一样的硬盘对拷成功呢?傲梅轻松备份,分区助手软件都是很好用的,硬盘拷贝工具,帮您松搞定大小不一样硬盘对拷 软件名称:轻松备 ...
- 图像色深与位深度的区别
位深是指存储每个像素所用的位数,例如一副32位100*100像素的图片,其大小为:100*100*32/8=40000 个字节, 原来一直以为图像色深就是位深度,后来网上搜了下才知道这2个是完全不同的 ...
最新文章
- 探索.NET中事件机制(续)——虚事件和事件重写问题,微软的Bug?!
- mysql timestamp 晚8小时_mysql插入timeStamp类型数据时间相差8小时的解决办法
- python 计时器 timeit 报错 NameError: name 'xxx' is not defined
- linux 创建匿名ftp,Linux使用pure-ftpd建立匿名ftp的方法
- [php入门] 3、WAMP中的集成MySQL相关基础操作
- 滑动窗口--单调队列
- 对爬虫数据分析的同学不要错过啦 数据分析数据可视化: Matplotlib
- Mahout 安装配置及一个简单测试
- 水下清淤机器人_国产第五代箱涵清淤机器人真机亮相上海城市管网展恒通环境展位...
- Spring: J2EE框架
- 【技能】excel小技巧:利用宏制作工资条
- 苹果雪豹操作系统正式版_苹果发布WatchOS 6.1.2第三个测试版本,修复Bug、提升设备稳定性...
- 08. 微信公众号生成带参数二维码
- python多边形的绘制教程_使用Python matplotlib绘制3D多边形
- 地图实时定位我的位置
- Centos 安装Firefox
- pyqt-窗口最大化
- WijmoJS 支持模板字符串常量
- oracle1参数化,carol2000的LR学习笔记(1)Oracle excel 数据参数化
- braycote castrol 600EF 601EF 602EF 815Z 614EF 615 631A 631RP 640AC 640ACMS 802RP 803EP 803RP 804 806