js 对象浅拷贝和深拷贝
var model={name:"boy",age:13};
var CopyModel=model;
console.log(CopyModel.name);
model.name="girl";
console.log(CopyModel.name);
输出值:
CopyModel复制model对象,修改model对象,再输出CopyModel对象,结果却是修改后model对象的值,为什么会这样?
"="就是浅拷贝,浅拷贝指向的内存都是同一个内存的地址:
model和CopyModel的值指向的是同一个内存。
而我们并不需要这样的浅拷贝,深拷贝是在内存中开辟一个新的内存地址:
1.JSON.parese(JSON.stringify(model));(这个实现的缺点是不能拷贝对象中的方法,而且连方法都会丢失。)
var CopyModel=JSON.parse(JSON.stringify(model));
2.通过JQuery的extend对象
var CopyModel=$.extend(true, {}, model);
js 对象浅拷贝和深拷贝相关推荐
- js对象浅拷贝与深拷贝
一.简介 浅拷贝是拷贝一层,如果数据是基本数据类型,会拷贝其本身,如果除了基本数据类型之外还有一层对象,那么只能拷贝其引用,对象的改变会反应到拷贝对象上. 深拷贝是拷贝多层,每一层的数据都 ...
- 对象浅拷贝和深拷贝有什么区别与实现方法
在JS中,除了基本数据类型,还存在对象.数组这种引用数据类型. 基本数据类型有number,string,boolean,null,undefined五类. 基本数据类型 名值存储在栈内存中 当b=a ...
- JS对象拷贝:深拷贝和浅拷贝
摘要:对象拷贝,简而言之就是将对象再复制一份,但是,复制的方法不同将会得到不同的结果. 本文分享自华为云社区<js对象深浅拷贝,来,试试看!>,作者: 北极光之夜.. 一.速识概念: 对象 ...
- js之浅拷贝和深拷贝
js数据类型主要分基本数据类型和引用数据类型.前者包括Number,String等,后者主要是Object,因此以下会针对不同的数据类型来分析,需要的朋友可以参考一下 1.js内存 js内存,或者说大 ...
- 【js】浅拷贝与深拷贝
一.理解 1.浅拷贝:只是拷贝一层,更深层次对象级别的只拷贝了地址. 浅拷贝的时候如果数据是基本数据类型,那么就如同直接赋值那种,会拷贝其本身,如果除了基本数据类型之外还有一层对象,那么对于浅拷贝而言 ...
- js实现浅拷贝和深拷贝
一.数据类型 数据分为基本数据类型和引用数据类型 基本数据类型(String, Number, Boolean, Null, Undefined,Symbol) 引用数据类型(Object[Array ...
- 一行代码完成js对象数组的深拷贝
1.对于普通数组(数组元素为数字或者字符串),深拷贝很简单,拷贝之后两个数组指针指向的存储地址不同,从而完成深拷贝 var _test = [1,2,3];//原数组 var _testCopy = ...
- JS中浅拷贝和深拷贝的使用,深拷贝实现方法总结
1.浅拷贝:两个对象经过拷贝后虽然具有相同的属性,但是他们都指向同一个内存空间.操作会引起引用,同一地址的变量一起改变. let a = {x: 1} let b = a b.x = 2 consol ...
- 小tips:JS之浅拷贝与深拷贝
浅拷贝: function extendCopy(p) {var c = {};for (var i in p) {c[i] = p[i];}return c; } 深拷贝: function dee ...
最新文章
- 保研夏令营的个人陈述怎么写?
- 最前沿:大规模深度强化学习的发展
- 走进欧洲、澳洲和加拿大21000个零售网点,比特币现金(BCH)有何潜力?
- 对一致性Hash算法,Java代码实现的深入研究
- UGUI组件之Canvas 组件简单笔记
- 九章算法强化班 - 课程大纲
- 科学与技术计算机图片解释,【图片】计算机-科普—都是从网上找的【计算机科学与技术吧】_百度贴吧...
- java连接mysql-8.0.11且成功读写
- linux vim 安装失败,ubuntu安装vim失败怎么办
- 2、★☆STM32的智能浇水补光系统√☆★
- python读取pdf提取文字和图片
- 大话设计模式之爱你一万年:第八章 结构型模式:外观(门面)模式:冬天有你不再寒冷:2.外观模式之一键开关
- 知识图谱构建技术简介
- splitter将winform窗体分为三列
- c语言编程培训都是小学,小学编程培训班明故宫哪里有C语言培训
- 三节点大数据环境安装教程1
- Android Data Binding 详细介绍与使用
- 安装卡巴斯基提示360 safety guard,360 antivirus,360 safe defender
- java 大于当前日期_java判断某日期 是否超过今天
- vscode win10笔记本 蓝屏_win10 最近突然频繁蓝屏
热门文章
- vscode 默认初始化_VSCode设置初始化模板
- 奠定了整个计算机科学的基础是什么,冯 诺依曼对计算机科学发展所作的贡献是什么...
- linux命令之nc,emacs,go run,查看文件行数等
- 【机器学习】朴素贝叶斯、SVM和数据分布检验分析
- python【力扣LeetCode算法题库】27-移除元素
- 【Network Security!】密码攻击的原理和方法
- linux重做引导分区,linuxgrub 0.97三重引导,基本无解,除非重做硬盘
- cocos creator 获取当前时间_前端开发者入门 Creator 必读吧
- 如何导入pytorch包_PyTorch 目前的运行途径
- python数值型转换字符型_2.6 字符型常量