1)普通函数实现

function cloneObject(obj) {if (obj === null || typeof obj !== 'object') {return obj;}var temp = obj.constructor(); // give temp the original obj's constructorfor (var key in obj) {temp[key] = cloneObject(obj[key]);}return temp;
}var bob = {name: "Bob",age: 32};var bill = cloneObject(bob);bill.name = "Bill";console.log(bob);console.log(bill);

2)通过json方法实现

var bob = {name: "Bob",age: 32
};var bill = (JSON.parse(JSON.stringify(bob)));
bill.name = "Bill";console.log(bob);
console.log(bill);

3)jquery中的$.extend

var bob = {name: "Bob",age: 32
};var bill = $.extend(true, {}, bob);
bill.name = "Bill";console.log(bob);
console.log(bill);

  

转载于:https://www.cnblogs.com/hutuzhu/p/5332334.html

javascript实现深克隆的几种方法相关推荐

  1. JavaScript 获得对象的N种方法 [转]

    JavaScript 获得对象的N种方法 [转] 方法如下: document.getElementById(ID)        //获得指定ID值的对象 document.getElementsB ...

  2. JavaScript 数组遍历的五种方法(转)

    转自:JavaScript 数组遍历的五种方法 这篇文章主要介绍了JavaScript 数组遍历的五种方法,帮助大家更好的理解和学习使用JavaScript,感兴趣的朋友可以了解下 在使用 JavaS ...

  3. JavaScript数组去重的五种方法

    JavaScript数组去重的五种方法 先简单准备一个数组,用于方法的实验: let array = [1,1,2,3,4,4,1,5,6,6,7,7,7]; console.log(`去重前的数组: ...

  4. JavaScript刷新当前页面的三种方法,载入新文档替换当前页面

    通过JavaScript刷新当前页面的三种方法代码就可以简单的实现,首先我们来看三种刷新当前页的方法: reload() 方法; replace() 方法; 页面自动刷新; 方法1:reload() ...

  5. Javascript刷新页面的几种方法。

    Javascript刷新页面的几种方法: 1 history.go(0) 2 location.reload() 3 location=location 4 location.assign(locat ...

  6. Javascript异步编程的4种方法

    你可能知道,Javascript语言的执行环境是"单线程"(single thread). 所谓"单线程",就是指一次只能完成一件任务.如果有多个任务,就必须排 ...

  7. [转载]Javascript异步编程的4种方法

    NodeJs的最大特性就是"异步" 目前在NodeJs里实现异步的方法中,使用"回调"是最常见的. 其实还有其他4种实现异步的方法: 在此以做记录 --- ht ...

  8. javascript中数组的22种方法

    前面的话数组总共有22种方法,本文将其分为对象继承方法.数组转换方法.栈和队列方法.数组排序方法.数组拼接方法.创建子数组方法.数组删改方法.数组位置方法.数组归并方法和数组迭代方法共10类来进行详细 ...

  9. (转)javascript异步编程的四种方法

    本文转自:http://www.ruanyifeng.com/blog/2012/12/asynchronous%EF%BC%BFjavascript.html 作者:阮一峰 本文仅仅作为个人mark ...

最新文章

  1. poj1419(最大独立集)
  2. 推荐11个构建和测试API的顶级工具
  3. python基础实例-Python入门基础知识实例,值得收藏!
  4. 【全文搜索引擎】Elasticsearch相关介绍与linux系统安装
  5. 理解vue赋值新属性
  6. C#中的CultureInfo类
  7. c++的STL--1概念通述
  8. Openstack平台搭建之第二天
  9. 日常踩坑:python新项目创建新的虚拟环境、pycharm无法安装install package工具、pip的缓存作用
  10. python实现excel数据透视_在pywin32中创建Excel数据透视缓存
  11. Emacs之删除整列操作
  12. shiro+springmvc+mybatis【转】
  13. 软件中断SWI的实现
  14. 初识app之产品需求分析文档设计
  15. flutter基础布局之 对话框Dialogs
  16. C语言求乘方、幂数、取余
  17. gre 填空13-30
  18. 【知识分享】10M宽带非10M
  19. 协方差矩阵的几何解释
  20. Java-- Maps

热门文章

  1. 【转】NGUI研究院之三种方式监听NGUI的事件方法(七)
  2. 莫德友_去哪儿酒店交易系统架构实践
  3. Linux-profile、bashrc、bash_profile之间的区别和联系
  4. c++返回值 注意事项
  5. 从windows server的文件服务到分布式文件服务(八)
  6. 這個日本味超濃的建築竟然是台灣的小學
  7. APP启动原理,APPdelegate程序状态解析
  8. 小爱童鞋@你,一起来撸个小程序吧
  9. 从配置文件的角度去了解Yii2
  10. python requests 爬取数据