JavaScript案例:实现对象的深拷贝
案例:
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案例:实现对象的深拷贝相关推荐
- JavaScript 中的对象拷贝(深拷贝、浅拷贝)
对象是 JavaScript 的基本块.对象是属性的集合,属性是键值对.JavaScript 中的几乎所有对象都是位于原型链顶部 Object 的实例. 介绍 如你所知,赋值运算符不会创建一个对象的副 ...
- javascript 数组以及对象的深拷贝方法
for循环 var arr = [{name: 'jq',old: '20' },{name: 'aa',old: '18' }] var arr2=[] for(let i=0;i<arr.l ...
- javaScript基础学习 - 14 - JavaScript内置对象 -案例代码
javaScript基础学习 - 14 - JavaScript内置对象 -案例代码 1. Math对象最大值 2. 封装自己的数学对象 3. Math绝对值和三个取整方法 4. Math对象随机数方 ...
- javaScript对象的深拷贝和浅拷贝
深拷贝和浅拷贝定义 浅拷贝:只是拷贝了基本类型的数据,而引用类型数据,复制后也是会发生引用,我们把这种拷贝叫做浅拷贝(浅复制).浅拷贝只复制指向某个对象的指针(引用地址),而不复制对象本身,新旧对象还 ...
- javascript案例_如何在JavaScript中使用增强现实-一个案例研究
javascript案例 by Apurav Chauhan 通过Apurav Chauhan 如何在JavaScript中使用增强现实-一个案例研究 (How to use Augmented Re ...
- 17个实用的JavaScript数组和对象的方法
原文:Useful Javascript Array and Object Methods 作者:Robert Cooper 译者:Jim Xiao 前段时间,我收听了一个很棒的Syntax FM播客 ...
- 盘点三个JavaScript案例——实现限时秒杀、定时跳转、改变盒子大小
前言 今天来给大家盘点三个JavaScript案例,分别是实现限时秒杀.定时跳转.改变盒子大小案例,一起来看看吧! 一.实现限时秒杀案例 1.在淘宝网中,商家为了促销经常搞一些活动,例如限时秒杀是常见 ...
- JavaScript(四)—— JavaScript 内置对象/JavaScript 简单数据类型与复杂类型
本篇为 JavaScript 系列笔记第三篇,将陆续更新 JavaScript(一)-- 初识JavaScript / 注释 / 输入输出语句 / 变量 / 数据类型 JavaScript(二)-- ...
- js获取对象数组中指定属性值对象_3分钟学会操作JavaScript内置对象,快来试试吧...
1 - 内置对象 1.1 内置对象 JavaScript 中的对象分为3种:自定义对象 .内置对象. 浏览器对象. 前面两种对象是JS 基础 内容,属于 ECMAScript: 第三个浏览器对象属于 ...
最新文章
- android sdk安装
- NAT双出口的热备份
- java.util.Properties类,保存时保留注释及格式不变
- myeclipse集成jad
- Outlets 和Referencing Outlets的区别
- 关于ListView 自定义 Adapter的问题
- tensorflow2 神经网络模型构建4种方法
- 如何入门CTF夺旗赛
- leetcode题解75-颜色分类
- C++_类和对象_封装_访问权限_C++中struct和class的区别---C++语言工作笔记037
- Shell脚本批量清除Nginx缓存
- 国内首例:飞步无人卡车携手中国邮政、德邦投入日常运营
- 雷达点云地图数据处理
- msm8937 bootloader流程分析
- Matlab画图,坐标轴范围设置和间隔设置
- NLTK-004:加工原料文本
- ufldl tutorial excise - Supervised Learning and Optimization
- u8信息服务器,u8服务器和数据库详细
- SRC漏洞提交平台和应急响应中心
- 三星电子中国研究院招聘CV、NLP、语音/音频工程师和实习生
热门文章
- SOLIDWORKS Plastics 模流分析基础与功能介绍
- word自动编号跳号
- 搜索评价指标——NDCG
- gorm Preload 坑啊
- 瑞金籍在美国知名计算机专家教授,新晚报数字报
- 用CSS和JS画出来的美女(酷)
- future java fork_将Java Future转换为CompletableFuture
- MySQL数据文件介绍及存放位置(*)
- JS 数据结构:链表
- 【Java秒杀方案】11.功能开发-【商品秒杀及优化】防止超卖 接口优化(redis预减库存,内存标记减少redis访问,RabbitMQ异步下单) 安全优化(隐藏秒杀接口,验证码,接口防刷)