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 相关文章推荐
用 Javascript 验证表单(form)中的单选(radio)值
Sep 08 Javascript
通过JS自动隐藏手机浏览器的地址栏实现原理与代码
Jan 02 Javascript
js实现倒计时(距离结束还有)示例代码
Jul 24 Javascript
Jquery仿淘宝京东多条件筛选可自行结合ajax加载示例
Aug 28 Javascript
学习JavaScript鼠标响应事件
Dec 25 Javascript
原生js实现autocomplete插件
Apr 14 Javascript
基于MVC5和Bootstrap的jQuery TreeView树形控件(二)之数据支持json字符串、list集合
Aug 11 Javascript
微信小程序canvas实现刮刮乐效果
Jul 09 Javascript
npm配置国内镜像资源+淘宝镜像的方法
Sep 07 Javascript
vuejs中监听窗口关闭和窗口刷新事件的方法
Sep 21 Javascript
微信小程序图片右边加两行文字的代码
Apr 23 Javascript
Vue全家桶入门基础教程
May 14 Vue.js
通过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
构建简单的Webmail系统
2006/10/09 PHP
深入解析php中的foreach问题
2013/06/30 PHP
php开启与关闭错误提示适用于没有修改php.ini的权限
2014/10/16 PHP
php+xml编程之xpath的应用实例
2015/01/24 PHP
php实现递归抓取网页类实例
2015/04/03 PHP
php读取torrent种子文件内容的方法(测试可用)
2016/05/03 PHP
微信利用PHP创建自定义菜单的方法
2016/08/01 PHP
PHP反射实际应用示例
2019/04/03 PHP
让textarea控件的滚动条怎是位与最下方
2007/04/20 Javascript
jQuery powerFloat万能浮动层下拉层插件使用介绍
2010/12/27 Javascript
ExtJs Excel导出并下载IIS服务器端遇到的问题
2011/09/16 Javascript
javascript 上下banner替换具体实现
2013/11/14 Javascript
js图片处理示例代码
2014/05/12 Javascript
javascript实现点击按钮弹出一个可关闭层窗口同时网页背景变灰的方法
2015/05/13 Javascript
浅谈JS中逗号运算符的用法
2016/06/12 Javascript
实例讲解JavaScript预编译流程
2019/01/24 Javascript
小程序登录/注册页面设计的实现代码
2019/05/24 Javascript
纯js+css实现仿移动端淘宝网站的弹出详情框功能
2019/12/29 Javascript
[04:38]完美世界携手游戏风云打造 卡尔工作室饰品系统篇
2013/04/25 DOTA
如何解决django配置settings时遇到Could not import settings 'conf.local'
2014/11/18 Python
Python3如何解决字符编码问题详解
2017/04/23 Python
详谈Python2.6和Python3.0中对除法操作的异同
2017/04/28 Python
Python判断变量是否为Json格式的字符串示例
2017/05/03 Python
Python基于PyGraphics包实现图片截取功能的方法
2017/12/21 Python
对Python 3.2 迭代器的next函数实例讲解
2018/10/18 Python
Python类的继承用法示例
2019/01/31 Python
python实现学员管理系统
2019/02/26 Python
Python Web框架之Django框架cookie和session用法分析
2019/08/16 Python
Python程序暂停的正常处理方法
2019/11/07 Python
Python数据分析库pandas高级接口dt的使用详解
2020/12/11 Python
pycharm 多行批量缩进和反向缩进快捷键介绍
2021/01/15 Python
验房委托书
2014/08/30 职场文书
党支部遵守党的政治纪律情况对照检查材料
2014/09/26 职场文书
2016中考冲刺决心书
2015/09/22 职场文书
2016年党员学习廉政准则心得体会
2016/01/20 职场文书
担保书怎么写 ?
2019/04/22 职场文书