目录

一、使用JSON暴力转换

二、 使用拓展运算符+解构赋值

三、 使用对象的合并,即通过Object.assign()方法

四、通过遍历对象

五、利用循环递归


一、使用JSON暴力转换

通过JSON.stringify() 和 JSON.parse() 将对象转为字符串之后在转为对象。

var obj = {name:'123'};
var obj2 = JSON.parse(JSON.stringify(obj))

二、 使用拓展运算符+解构赋值

该方法的局限性在于,当值为undefined、function、symbol会在转换过程中被忽略。

var obj = {name:'123',age:13};
var obj2 = {...obj}

三、 使用对象的合并,即通过Object.assign()方法

注意:该方法的第一个参数必须是空对象

var obj = {name:'123',age:13};
var obj2 = Object.assign({},obj);

四、通过遍历对象

var obj1 = {name:"123"};
var obj2 = {};
for(x in obj1) {obj2[x] = obj1[x];
}

五、利用循环递归

以上四种方法只能进行一层拷贝,即当对象的属性值也是对象时,就无法实现该属性的深拷贝,在这里提供一种利用循环递归进行深拷贝的方法。

    var obj = {name: "123",sex: { age: "小花" }};var newObj = {};function deepClone(obj, newObj) {var newObj = newObj || {};for (let key in obj) {if (typeof obj[key] == 'object') {newObj[key] = (obj[key].constructor === Array) ? [] : {}deepClone(obj[key], newObj[key]);} else {newObj[key] = obj[key]}}return newObj;}console.log(deepClone(obj, newObj));//{name: "123",sex: {age: '小花'}}

js中对象数据类型的深拷贝方法(5种)相关推荐

  1. 判断js中的数据类型的方法

    在 判断js中的数据类型 我们通常会使用typeOf()方法,        typeof   2         输出   number       typeof   null       输出   ...

  2. js中判断数据类型的方法

    JS中判断数据类型的方法: 使用typeof操作符. 对一个值使用 typeof 操作符可能返回下列某个字符串,返回的类型都是字符串形式. (1) undefined:如果这个值未定义 (2) boo ...

  3. html数据类型判断,JS中判断数据类型的几种方法

    1⃣️首先我们来了解一下js中的数据类型 1.基本数据类型:Undefined.Null.Boolean.Number.String(值类型) 2.复杂数据类型:Object(引用类型) (值类型和引 ...

  4. js中修改this的指向方法整理

    JavaScript(简称"JS") 是一种具有函数优先的轻量级,解释型或即时编译型的编程语言.虽然它是作为开发Web页面的脚本语言而出名,但是它也被用到了很多非浏览器环境中,Ja ...

  5. [转载]如何判断js中的数据类型

    原文地址:如何判断js中的数据类型作者:最初的你 如何判断js中的数据类型:typeof.instanceof. constructor. prototype方法比较 如何判断js中的类型呢,先举几个 ...

  6. JS 中对象的深浅拷贝(ES3、ES5、ES6不同方法底层实现,一文搞清楚深浅拷贝面试常问题)

    JS 中对象的深浅拷贝   拷贝我们都知道这个词的意思,我们经常做过复制.粘贴的操作,其中的复制就是拷贝,那么在拷贝的时候,如果我们复制出来的内容和原内容是完全的分开,各自不相影响,那么这就属于深拷贝 ...

  7. 前端开发:JS中常用数据类型的转换以及使用场景集锦

    前言 在前端开发中,关于数据转换也是使用频率非常高的知识点,尤其是常见数据类型之间的相互转换的使用频率就更高了,那么本篇博文就来分享一下关于JS中常用数据类型的转换使用,分享一下,方便后期查阅使用. ...

  8. 如何理解js中基本数据类型的值不可变

    js的数据类型 在讲解我们要说明的问题之前,需要知道js有哪些数据类型.js有两种数据类型:基本数据类型和引用数据类型 基本数据类型:number.string.boolean.undefined.n ...

  9. JS中的call()和apply()方法(转)

    转自:http://uule.iteye.com/blog/1158829 JS中的call()和apply()方法 博客分类: JS 1.方法定义 call方法:  语法:call([thisObj ...

最新文章

  1. 优盘中发现计算机病毒怎么办,【网警课堂】教你解决U盘使用中出现的各种问题!...
  2. 无向图求桥 UVA 796
  3. 【SpringBoot集成ElasticSearch 02】Java HTTP Rest client for ElasticSearch Jest 客户端集成(配置+增删改查测试源码)【推荐使用】
  4. 前端学习(497):布局之居中布局
  5. e300氛围灯哪里调节_黑色的奔驰E300有了亚光膜的加持 一出场就惊艳四座
  6. android 点击通知栏打开activity,Android实现点击通知栏后,先启动应用再打开目标Activity...
  7. BCH恢复禁用的脚本操作码[草案]
  8. 传奇架设教程GOM引擎微端设置方法
  9. IEEE Latex下载
  10. 领导让我接私活,怎么办
  11. 网站盈利模式分析分类
  12. 删除链表的节点(JS)
  13. signature=89d6821c2fe7d31483f21edf9c96c63b,Forage harvester
  14. linux界面安装weblogic12c,Linux安装WebLogic12c
  15. [极致用户体验] 微信设置大字号后,iOS加载网页时闪动怎么办?
  16. SSD1306显示屏--躲避类游戏
  17. Opencv中BGR、YUV、YUV_I420\NV12分析
  18. sublime Text 3 javaScript代码自动提示插件安装步骤
  19. new HashMap(list.size())指定size就能完全避免扩容带来的额外开销了吗?
  20. IE11中图片无法显示(完美解决)

热门文章

  1. 23.Python中的exec函数
  2. 简易可逆加密解密算法
  3. Python 定义类和属性
  4. 台式电脑怎么录屏?分享3个实用方法,简单又好用
  5. 软件协会第01次活动第04次任务布置:爱心代码+数组练习
  6. Go func 普通函数
  7. 前端学习之旅——Jquery
  8. html中babel编译vue,vue-cli中的babel配置文件.babelrc实例详解
  9. pre标签导致打印页面出现大片空白
  10. grabcut与graphcut的一些心得,附修改过的grabcut代码