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实现深拷贝常用的几种方法相关推荐

  1. js判断数据类型常用的6种方法

    js判断数据类型常用的方法,不论在开发中开始在面试中,都是经常遇到的问题,尤其是在面试时,当面试官问及js判断数据类型的方法时,回答的越多,说明掌握的广度跟深度越多,感觉自己逼格也越高.废话不多说了, ...

  2. js 中继承常用的几种方法

    继承 继承: 就是指 一个对象 有权 去访问 另一个对象的成员属性 作用是实现代码的复用 继承的方式:只要能实现一个对象 有权访问另一个对象成员 的 方式 都可以成为是 实现继承的方式 3 .继承是对 ...

  3. JS对象的深拷贝常用的四种方法

    1.for循环完成深拷贝 2.通过JSON.stringify() 和 JSON.parse() 将对象转为字符串之后在转为对象. 3.使用拓展运算符+解构赋值(该方法的局限性在于,当值为undefi ...

  4. js判断数据类型常用的四种方法

    首先说一下js中的数据类型 基本数据类型:String.Number.Boolean.null.undefined.Symbol 引用数据类型:Object  1.typeof const a1 = ...

  5. jQuery添加DOM节点常用的5种方法

    一.内部插入(前插入.后插入): <!DOCTYPE html> <html><head><meta charset="UTF-8"> ...

  6. spring boot项目 中止运行 最常用的几种方法

    spring boot项目 中止运行 最常用的几种方法: 1. 调用接口,停止应用上下文 @RestController public class ShutdownController impleme ...

  7. PHP教程:WebService最常用的两种方法

    国内用PHP写WebService的真的很少,网上资料也没多少,公司的项目开发过程中,经历了不少这方面的东西,写出来以供大家参考(谢谢老农提供的WSDL和程序文件) 客户端 代码: 01.   02. ...

  8. iOS: JS和Native交互的两种方法,iosjsnative交互

    iOS: JS和Native交互的两种方法,iosjsnative交互 背景: UIWebView: iOS 用来展示 web 端内容的控件. 1. 核心方法: - (NSString*)string ...

  9. 统计内表行数常用的三种方法

    以下是统计内表行数常用的三种方法, 如下:   1.LOOP AT it_itab.    g_lines2 = g_lines2 + 1.    ENDLOOP.    该方法是通过循环内部表自己累 ...

最新文章

  1. Kubernates集群入门(1)
  2. easyui datagrid 返回数据正确 fit='true' 时不显示内容
  3. 怎么能学好Java开发,学好Java一般需要多少钱
  4. samba 实现不同操作系统之间的文件共享
  5. 前端学习(3161):react-hello-react之样式的模块化
  6. Chapter7-13_Dialogue State Tracking (as Question Answering)
  7. php连接mysql数据没反应_PHP mysql 数据库连接时 网页无法显示
  8. c语言缺陷与陷阱,《C语言的缺陷与陷阱》读后总结
  9. 评论列表css样式,评论框CSS样式修改
  10. Detours框架实现原理探究
  11. 鼠标右键失灵java_全百科鼠标助手
  12. idea创建maven项目失败, Failed to create a Maven project
  13. prophet outliers异常值
  14. linux补齐命令,Linux中10个有用的命令行补齐命令
  15. ALS算法原理和在音乐推荐上的应用
  16. WSL无法访问网络的解决办法
  17. Java 三种循环的流程图画法总结(for,while,do-while循环)
  18. react生命周期写法
  19. API服务平台,服务管理与发布平台
  20. brew安装教程,brew换国内软件源,brew换中科大源,brew常用命令,Mac的包管理器

热门文章

  1. OpenStack Foundation说开放式基础设施,葫芦里卖的什么药
  2. ASUS华硕笔记本电脑天选2_FX506HEB11400 3050Ti原装出厂系统恢复原厂系统11
  3. 怎样查询某一支股票历史分红情况
  4. 2021继往开来,继续前行!
  5. 适用于G Suite用户的Google App Maker低代码工具首次亮相
  6. Google Analytics cookie内容详解 Read more: http://bluewhale.cc/2010-01-24/google-analytics-cookie.html#
  7. matlab 累加合,matlab循环语句for累加
  8. Android 修改字体样式,看这篇就够了
  9. 量子比特-智能财税大数据生态网络,8月8日首发上线FFEX
  10. WebKit浏览器编译——开启宏定义