JS实现深拷贝常用的几种方法
JS实现深拷贝常用的几种方法
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>JS深拷贝的几种方法</title>
</head>
<body><script src="https://cdn.jsdelivr.net/npm/lodash@4.17.20/lodash.min.js"></script><script>let origin = ['李世民','刘邦','朱元璋','刘彻','朱棣']/*** 1. Object.assign() 实现深拷贝 --- 个人常用*/// let target = Object.assign([],origin) /*** 2. JSON.parse() 和 JSON.stringify() 实现深拷贝*/// let target = JSON.parse(JSON.stringify(origin))/*** 3. lodash 里面的 cloneDeep() 方法 实现深拷贝* vue 中使用 :* a. npm i --save lodash 下载依赖* b. import _ from 'lodash' 在 组件 中引入 * c. 用法和下面的一样*/let target = _.cloneDeep(origin) target.pop() // 修改 target 数组后console.log('origin',origin) // origin ['李世民','刘邦','朱元璋','刘彻']console.log('target',target) // target ['李世民','刘邦','朱元璋','刘彻','朱棣']</script>
</body>
</html>
附
1. 通过递归的方式实现深拷贝
function deepClone(obj){let objClone = Array.isArray(obj) ? [] : {};if (obj && typeof obj === 'object') {for(let key in obj){if (obj[key] && typeof obj[key] === 'object'){objClone[key] = deepClone(obj[key]);}else{objClone[key] = obj[key]}}}return objClone;
}
2. 通过使用字符串作为中间量的方式实现深拷贝
var obj = {age: '12',showAge: function () {console.log('哈哈');},
};
console.log(JSON.parse(JSON.stringify(obj)));
验证
JS实现深拷贝常用的几种方法相关推荐
- js判断数据类型常用的6种方法
js判断数据类型常用的方法,不论在开发中开始在面试中,都是经常遇到的问题,尤其是在面试时,当面试官问及js判断数据类型的方法时,回答的越多,说明掌握的广度跟深度越多,感觉自己逼格也越高.废话不多说了, ...
- js 中继承常用的几种方法
继承 继承: 就是指 一个对象 有权 去访问 另一个对象的成员属性 作用是实现代码的复用 继承的方式:只要能实现一个对象 有权访问另一个对象成员 的 方式 都可以成为是 实现继承的方式 3 .继承是对 ...
- JS对象的深拷贝常用的四种方法
1.for循环完成深拷贝 2.通过JSON.stringify() 和 JSON.parse() 将对象转为字符串之后在转为对象. 3.使用拓展运算符+解构赋值(该方法的局限性在于,当值为undefi ...
- js判断数据类型常用的四种方法
首先说一下js中的数据类型 基本数据类型:String.Number.Boolean.null.undefined.Symbol 引用数据类型:Object 1.typeof const a1 = ...
- jQuery添加DOM节点常用的5种方法
一.内部插入(前插入.后插入): <!DOCTYPE html> <html><head><meta charset="UTF-8"> ...
- spring boot项目 中止运行 最常用的几种方法
spring boot项目 中止运行 最常用的几种方法: 1. 调用接口,停止应用上下文 @RestController public class ShutdownController impleme ...
- PHP教程:WebService最常用的两种方法
国内用PHP写WebService的真的很少,网上资料也没多少,公司的项目开发过程中,经历了不少这方面的东西,写出来以供大家参考(谢谢老农提供的WSDL和程序文件) 客户端 代码: 01. 02. ...
- iOS: JS和Native交互的两种方法,iosjsnative交互
iOS: JS和Native交互的两种方法,iosjsnative交互 背景: UIWebView: iOS 用来展示 web 端内容的控件. 1. 核心方法: - (NSString*)string ...
- 统计内表行数常用的三种方法
以下是统计内表行数常用的三种方法, 如下: 1.LOOP AT it_itab. g_lines2 = g_lines2 + 1. ENDLOOP. 该方法是通过循环内部表自己累 ...
最新文章
- Kubernates集群入门(1)
- easyui datagrid 返回数据正确 fit='true' 时不显示内容
- 怎么能学好Java开发,学好Java一般需要多少钱
- samba 实现不同操作系统之间的文件共享
- 前端学习(3161):react-hello-react之样式的模块化
- Chapter7-13_Dialogue State Tracking (as Question Answering)
- php连接mysql数据没反应_PHP mysql 数据库连接时 网页无法显示
- c语言缺陷与陷阱,《C语言的缺陷与陷阱》读后总结
- 评论列表css样式,评论框CSS样式修改
- Detours框架实现原理探究
- 鼠标右键失灵java_全百科鼠标助手
- idea创建maven项目失败, Failed to create a Maven project
- prophet outliers异常值
- linux补齐命令,Linux中10个有用的命令行补齐命令
- ALS算法原理和在音乐推荐上的应用
- WSL无法访问网络的解决办法
- Java 三种循环的流程图画法总结(for,while,do-while循环)
- react生命周期写法
- API服务平台,服务管理与发布平台
- brew安装教程,brew换国内软件源,brew换中科大源,brew常用命令,Mac的包管理器
热门文章
- OpenStack Foundation说开放式基础设施,葫芦里卖的什么药
- ASUS华硕笔记本电脑天选2_FX506HEB11400 3050Ti原装出厂系统恢复原厂系统11
- 怎样查询某一支股票历史分红情况
- 2021继往开来,继续前行!
- 适用于G Suite用户的Google App Maker低代码工具首次亮相
- Google Analytics cookie内容详解 Read more: http://bluewhale.cc/2010-01-24/google-analytics-cookie.html#
- matlab 累加合,matlab循环语句for累加
- Android 修改字体样式,看这篇就够了
- 量子比特-智能财税大数据生态网络,8月8日首发上线FFEX
- WebKit浏览器编译——开启宏定义