案例:

var a = {

name: '小明',

age: 19,

hobby: ['唱', '跳', 'rap', '篮球'],

};

实现对象的深拷贝

案例分析:

1、创建deepCopy的方法实现传入一个对象,返回一个新的对象

2、新对象与就对象属性值完全相等,但是两个对象不共享同一块内存

3、可以通过 obj.constructor === Array 判断属性是否是数组

代码:

 <script>var a = {name: '小明',age: 19,hobby: ['唱', '跳', 'rap', '篮球'],};function deepCopy(obj) {var newobj = obj.constructor === Array ? [] : {};if (typeof (obj) !== "object") { //若不是数组或对象直接返回return obj;} else {for (var key in obj) {if (typeof (obj[key]) === "object") { //判断是数组或对象newobj[key] = deepCopy(obj[key]); //递归  ['唱','跳','rap','篮球']} else {newobj[key] = obj[key]}}}return newobj; //返回深拷贝数组或对象}var b = deepCopy(a);a.name = "小华";//修改a的name值console.log(a, b);</script>

JavaScript案例:实现对象的深拷贝相关推荐

  1. JavaScript 中的对象拷贝(深拷贝、浅拷贝)

    对象是 JavaScript 的基本块.对象是属性的集合,属性是键值对.JavaScript 中的几乎所有对象都是位于原型链顶部 Object 的实例. 介绍 如你所知,赋值运算符不会创建一个对象的副 ...

  2. javascript 数组以及对象的深拷贝方法

    for循环 var arr = [{name: 'jq',old: '20' },{name: 'aa',old: '18' }] var arr2=[] for(let i=0;i<arr.l ...

  3. javaScript基础学习 - 14 - JavaScript内置对象 -案例代码

    javaScript基础学习 - 14 - JavaScript内置对象 -案例代码 1. Math对象最大值 2. 封装自己的数学对象 3. Math绝对值和三个取整方法 4. Math对象随机数方 ...

  4. javaScript对象的深拷贝和浅拷贝

    深拷贝和浅拷贝定义 浅拷贝:只是拷贝了基本类型的数据,而引用类型数据,复制后也是会发生引用,我们把这种拷贝叫做浅拷贝(浅复制).浅拷贝只复制指向某个对象的指针(引用地址),而不复制对象本身,新旧对象还 ...

  5. javascript案例_如何在JavaScript中使用增强现实-一个案例研究

    javascript案例 by Apurav Chauhan 通过Apurav Chauhan 如何在JavaScript中使用增强现实-一个案例研究 (How to use Augmented Re ...

  6. 17个实用的JavaScript数组和对象的方法

    原文:Useful Javascript Array and Object Methods 作者:Robert Cooper 译者:Jim Xiao 前段时间,我收听了一个很棒的Syntax FM播客 ...

  7. 盘点三个JavaScript案例——实现限时秒杀、定时跳转、改变盒子大小

    前言 今天来给大家盘点三个JavaScript案例,分别是实现限时秒杀.定时跳转.改变盒子大小案例,一起来看看吧! 一.实现限时秒杀案例 1.在淘宝网中,商家为了促销经常搞一些活动,例如限时秒杀是常见 ...

  8. JavaScript(四)—— JavaScript 内置对象/JavaScript 简单数据类型与复杂类型

    本篇为 JavaScript 系列笔记第三篇,将陆续更新 JavaScript(一)-- 初识JavaScript / 注释 / 输入输出语句 / 变量 / 数据类型 JavaScript(二)-- ...

  9. js获取对象数组中指定属性值对象_3分钟学会操作JavaScript内置对象,快来试试吧...

    1 - 内置对象 1.1 内置对象 JavaScript 中的对象分为3种:自定义对象 .内置对象. 浏览器对象. 前面两种对象是JS 基础 内容,属于 ECMAScript: 第三个浏览器对象属于 ...

最新文章

  1. android sdk安装
  2. NAT双出口的热备份
  3. java.util.Properties类,保存时保留注释及格式不变
  4. myeclipse集成jad
  5. Outlets 和Referencing Outlets的区别
  6. 关于ListView 自定义 Adapter的问题
  7. tensorflow2 神经网络模型构建4种方法
  8. 如何入门CTF夺旗赛
  9. leetcode题解75-颜色分类
  10. C++_类和对象_封装_访问权限_C++中struct和class的区别---C++语言工作笔记037
  11. Shell脚本批量清除Nginx缓存
  12. 国内首例:飞步无人卡车携手中国邮政、德邦投入日常运营
  13. 雷达点云地图数据处理
  14. msm8937 bootloader流程分析
  15. Matlab画图,坐标轴范围设置和间隔设置
  16. NLTK-004:加工原料文本
  17. ufldl tutorial excise - Supervised Learning and Optimization
  18. u8信息服务器,u8服务器和数据库详细
  19. SRC漏洞提交平台和应急响应中心
  20. 三星电子中国研究院招聘CV、NLP、语音/音频工程师和实习生

热门文章

  1. SOLIDWORKS Plastics 模流分析基础与功能介绍
  2. word自动编号跳号
  3. 搜索评价指标——NDCG
  4. gorm Preload 坑啊
  5. 瑞金籍在美国知名计算机专家教授,新晚报数字报
  6. 用CSS和JS画出来的美女(酷)
  7. future java fork_将Java Future转换为CompletableFuture
  8. MySQL数据文件介绍及存放位置(*)
  9. JS 数据结构:链表
  10. 【Java秒杀方案】11.功能开发-【商品秒杀及优化】防止超卖 接口优化(redis预减库存,内存标记减少redis访问,RabbitMQ异步下单) 安全优化(隐藏秒杀接口,验证码,接口防刷)