1. $.extend(deep,target.obj,obj1....);

var obj = {name:'张三',money:'1000w',girl:{name:'王晓凤',age:18,height:175}};var obj1 = {money:'100w',girl:{name:'古娜拉',weight:80,}};var obj2 = {sub:'博士'};

浅拷贝:deep:false 只对比第一个层级 属性名相同 就用后面的覆盖前面的

var res = $.extend(false,obj,obj1,obj2);console.log(res);

深拷贝:deep:true 递归拷贝 如果第一个层级的属性名和属性值都是对象,对比子属性

var res = $.extend(true,obj,obj1,obj2)console.log(res);

2. JSON.parse(JSON.stringify(数据));

JSON.stringify: 将数据转成json格式的数据 有js格式的字符串

JSON.parse: 将json格式的字符串转成js数据 新数据

 var obj = {name:'张三',money:'10000w',arr:['房地产','股票','电影'],girl:{name:'王晓凤',age:18,height:175}};console.log(JSON.stringify(obj));var res = JSON.parse(JSON.stringify(obj));console.log(res,obj);console.log(res == obj);//false

3.递归拷贝

var obj = {name:'张三',money:'10000w',arr:['房地产','股票','电影'],girl:{name:'王晓凤',age:18,height:175}};
var arr = [1,2,3,4,5,6];// 判断数据类型的函数
function getType(data){return Object.prototype.toString.call(data).slice(8,-1);
}function deepClone(json){// 1. 判断传进来的数据类型 如果是数组创建一个新数组 如果是对象创建一个新对象 其他情况都直接返回if(getType(json) == 'Object'){var res = {};} else if(getType(json) == 'Array'){var res = [];} else{return json;}// 2. 把数据在复制存储一次 获取到每个数据for(var k in json){// 如果要拷贝的数据 是数组或者对象 需要进行递归拷贝if(getType(json[k]) == 'Object' || getType(json[k]) == 'Array'){res[k] = deepClone(json[k]);} else {res[k] = json[k];}}return res;}
console.log(deepClone(obj));
console.log(deepClone(arr));

【深浅拷贝的实现方式】相关推荐

  1. 前端代码深浅拷贝四种方式

    今天公司的实习生有问我代码怎么深拷贝 下面我就给大家整理四种前端代码深拷贝的四种方式 前端数据分为基本数据类型和引用数据类型,当我们拷贝引用数据类型的时候,我们希望改变新数组(对象)不改变原本的数组( ...

  2. JS(JavaScript)中实现深浅拷贝的几种方式(详细阅读 非常重要)。

    在了解深浅拷贝之前,我们先一起来简单来了解一下,JavaScript 数据存储的方式,以及数据类型(). JavaScript 中数据存储分为 简单数据类型和复杂数据类型(引用数据类型) 其中 5 种 ...

  3. 实现JS深浅拷贝的五种方式

    一.堆栈.基本数据类型.引用数据类型 在了解深浅拷贝之前,我们需得对堆栈.基本数据类型.引用数据类型有基本的了解 基本数据类型:number.string.boolean.null.undefined ...

  4. python基础(三元运算+深浅拷贝+函数参数)

    三元运算 三元运算,又称三目运算,主要作用是减少代码量,是对简单的条件语句的缩写. 1 书写格式: 2 result = 值1 if 条件 else 值2 3 即如果条件成立,则将值1赋给result ...

  5. python——赋值与深浅拷贝

    结合python变量存储的特性从内存的角度来谈一谈赋值和深浅拷贝~~~ 预备知识一--python的变量及其存储 在详细的了解python中赋值.copy和deepcopy之前,我们还是要花一点时间来 ...

  6. Python的深浅拷贝讲解!

    ↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale干货 作者:皮钱超,厦门大学,Datawhale原创作者 本文约3000字,建 ...

  7. 【Python基础】Python的深浅拷贝讲解

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 前言 在很多语言中都存在深浅拷贝两种拷贝数据的方式,Python中 ...

  8. 是时候捋一捋Java的深浅拷贝了

    在开发.刷题.面试中,我们可能会遇到将一个对象的属性赋值到另一个对象的情况,这种情况就叫做拷贝.拷贝与Java内存结构息息相关,搞懂Java深浅拷贝是很必要的! 在对象的拷贝中,很多初学者可能搞不清到 ...

  9. Python中的赋值、引用和深浅拷贝

    2019独角兽企业重金招聘Python工程师标准>>> 全局变量 在函数之外创建的变量属于main,又被称为全局变量.它们可以在main中的任意函数中访问,与局部变量在函数结束时消失 ...

最新文章

  1. 前谷歌工程团队负责人:如何打造一个完美的产品
  2. python期末考试编程题_智慧树知到_Python程序设计基础_期末考试答案
  3. 5页面调用原生相机_React Native与原生通信全梳理(iOS端)
  4. html switch开关实现隐藏,css3实现switch开关效果
  5. 使用ASP.NET Core 3.x 构建 RESTful API - 3.3.1 HTTP状态码
  6. 1095 解码PAT准考证 (25 分)
  7. Gallery和BaseAdapter容器
  8. python-day8-循环补充
  9. Python基础2-Python中文乱码(转)
  10. 极光推送JPush使用Java SDK开发
  11. 计算机技术和通信技术的关系,计算机技术与通信技术的关系
  12. 异常解决——Tomcat启动异常:Cannot assign requested address
  13. struts2值栈、struts2标签、ONGL表达式、EL表达式、JSTL表达式、jsp标签
  14. 高中计算机省赛试题,全国青少年信息学奥林匹克竞赛(高中组)初赛试题及答案...
  15. android 友盟渠道号,获取友盟渠道号
  16. ACM-ICPC 2018 南京赛区网络预赛 I.Skr(Manacher马拉车+Hash哈希/回文树)
  17. CentOS7搭建nextcloud创建私有云盘
  18. Win10屏幕亮度调节失效之终极解决方案
  19. 计算机bootmgr丢失,电脑开机提示bootmgr is missing的解决方法
  20. 三一重机“一天内解决”服务标准背后,百度智能云守护“中国速度”

热门文章

  1. 一文掌握GSEA,超详细教程!
  2. 蓝桥杯python基础练习
  3. mysql 竖线_为什么MySQL拒绝在INSERT INTO字符串中使用竖线('|')字符?
  4. 局域网内windows远程mac(使用TeamView)
  5. Ninth season twenty-first episode,Chandler and Monica may never have children??????
  6. python_给视频打马赛克
  7. tomcat无法响应请求,假死
  8. html文本怎么打印出来,如何把一个html文件直接打印出来(200分)
  9. iOS应用程序内存泄露的监测
  10. 贝努利概率 matlab