javascript浅层克隆、深度克隆对比及实例解析


Posted in Javascript onFebruary 09, 2020

这篇文章主要介绍了javascript浅层克隆、深度克隆对比及实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

1、浅层克隆, (引用值改变, 两个都一起变)

var obj = {
        name : 'xiaoming',
        age : 12,
        children : ['mimi','lili','rokey']
      }
      var obj2 = {};

      function clone(origin, target) {
        var target = target || {};
         for(var prop in origin) {
           target[prop] = origin[prop];
         }
         return target;
      }

      clone(obj, obj2);

2、深度克隆 (只考虑数组和对象)

(1)判断是不是原始值

 (2)判断是数组还是对象 Object.prototype.toString.call([]) = '[object Array]' Object.prototype.toString.call({}) = '[object Object]'

(3)建立相应的数组和对象

(4)递归

function deepClone(origin, target) {
        var target = target || {},
          toStr = Object.prototype.toString,
          arrStr = '[object Array]';
        for(var prop in origin) {
          if(origin.hasOwnProperty(prop)) {   //判断是不是对象自带的属性
            if(origin[prop] !== 'null' && typeof(origin[prop]) == 'object') {
              if(toStr.call(origin[prop]) == arrStr) {
                target[prop] = [];
              }else {
                target[prop] = {};
              }
              deepClone(origin[prop], target[prop]);
            }else {
              target[prop] = origin[prop];
            }
          }
        }
        return target;
      }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
出现“不能执行已释放的Script代码”错误的原因及解决办法
Aug 29 Javascript
几个常用的JavaScript字符串处理函数 - split()、join()、substring()和indexOf()
Jun 02 Javascript
javascript写的一个链表实现代码
Oct 25 Javascript
关于jQuery $.isNumeric vs. $.isNaN vs. isNaN
Apr 15 Javascript
js对象浅拷贝和深拷贝详解
Sep 05 Javascript
AngularJS表格样式简单设置方法示例
Mar 03 Javascript
React/Redux应用使用Async/Await的方法
Nov 16 Javascript
JavaScript重复元素处理方法分析【统计个数、计算、去重复等】
Dec 14 Javascript
基于VUE移动音乐WEBAPP跨域请求失败的解决方法
Jan 16 Javascript
基于$.ajax()方法从服务器获取json数据的几种方式总结
Jan 31 Javascript
解决element UI 自定义传参的问题
Aug 22 Javascript
vue 实现超长文本截取,悬浮框提示
Jul 29 Javascript
通过javascript实现扫雷游戏代码实例
Feb 09 #Javascript
jQuery实现简单聊天室
Feb 08 #jQuery
jquery实现点击弹出对话框
Feb 08 #jQuery
jQuery实现简易聊天框
Feb 08 #jQuery
jquery添加div实现消息聊天框
Feb 08 #jQuery
js实现聊天对话框
Feb 08 #Javascript
jQuery实现聊天对话框
Feb 08 #jQuery
You might like
了解咖啡雨林联盟认证 什么是雨林认证 雨林认证是什么意思
2021/03/05 新手入门
用PHP的超级变量$_GET获取HTML表单(Form) 数据
2011/05/07 PHP
JQuery 插件制作实践 xMarquee插件V1.0
2010/04/02 Javascript
js中根据字数截取字符串,不能截断url
2012/01/12 Javascript
checkbox设置复选框的只读效果不让用户勾选
2013/08/12 Javascript
jquery easyui滚动条部分设置介绍
2013/09/12 Javascript
使用JavaScript实现Java的List功能(实例讲解)
2013/11/07 Javascript
Bootstrap CSS组件之大屏幕展播
2016/12/17 Javascript
Highcharts+NodeJS搭建数据可视化平台示例
2017/01/01 NodeJs
微信小程序的分类页面制作
2017/06/27 Javascript
修改 bootstrap table 默认detailRow样式的实例代码
2017/07/21 Javascript
Vue自定义指令上报Google Analytics事件统计的方法
2019/02/25 Javascript
JavaScript仿京东秒杀倒计时
2020/03/17 Javascript
基于Vue+Webpack拆分路由文件实现管理
2020/11/16 Javascript
使用AutoJs实现微信抢红包的代码
2020/12/31 Javascript
[51:36]EG vs VP 2018国际邀请赛淘汰赛BO3 第一场 8.24
2018/08/25 DOTA
[01:04:09]DOTA2-DPC中国联赛 正赛 iG vs VG BO3 第二场 2月2日
2021/03/11 DOTA
Python中使用ConfigParser解析ini配置文件实例
2014/08/30 Python
python获取当前时间对应unix时间戳的方法
2015/05/15 Python
Python实现批量读取图片并存入mongodb数据库的方法示例
2018/04/02 Python
Pycharm在创建py文件时,自动添加文件头注释的实例
2018/05/07 Python
python3连接MySQL数据库实例详解
2018/05/24 Python
使用python实现数组、链表、队列、栈的方法
2019/12/20 Python
python设置代理和添加镜像源的方法
2020/02/14 Python
Django media static外部访问Django中的图片设置教程
2020/04/07 Python
python3.7调试的实例方法
2020/07/21 Python
英国时尚高尔夫服装购物网站:Trendy Golf
2020/01/10 全球购物
新学期红领巾广播稿
2014/01/14 职场文书
初中科学教学反思
2014/01/21 职场文书
初三化学教学反思
2014/01/23 职场文书
餐厅考勤管理制度
2014/01/28 职场文书
社区服务活动小结
2014/07/08 职场文书
2014派出所所长群众路线对照检查材料思想汇报
2014/09/18 职场文书
开学第一周总结
2015/07/16 职场文书
朋友聚会祝酒词
2015/08/10 职场文书
Python Django搭建文件下载服务器的实现
2021/05/10 Python