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 相关文章推荐
正则表达式判断是否存在中文和全角字符和判断包含中文字符串长度
Sep 27 Javascript
js网页中的(运行代码)功能实现思路
Feb 04 Javascript
jq选项卡鼠标延迟的插件实例
May 13 Javascript
jquery让返回的内容显示在特定div里(代码少而精悍)
Jun 23 Javascript
JS实现自动变换的菜单效果代码
Sep 09 Javascript
javascript单页面手势滑屏切换原理详解
Mar 21 Javascript
深入理解Javascript中的自执行匿名函数
Jun 03 Javascript
canvas实现图像放大镜
Feb 06 Javascript
网页中的图片查看器viewjs使用方法
Jul 11 Javascript
无限循环轮播图之运动框架(原生JS实现)
Oct 01 Javascript
vue使用原生js实现滚动页面跟踪导航高亮的示例代码
Oct 25 Javascript
详解如何在Javascript和Sass之间共享变量
Nov 13 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
php递归删除目录下的文件但保留的实例分享
2014/05/10 PHP
PHP临时文件的安全性分析
2014/07/04 PHP
Laravel获取当前请求的控制器和方法以及中间件的例子
2019/10/11 PHP
php中get_object_vars()在数组的实例用法
2021/02/22 PHP
javaScript面向对象继承方法经典实现
2013/08/20 Javascript
extjs中form与grid交互数据(record)的方法
2013/08/29 Javascript
简介JavaScript中POSITIVE_INFINITY值的使用
2015/06/05 Javascript
Bootstrap所支持的表单控件实例详解
2016/05/16 Javascript
轻松掌握JavaScript中的Math object数学对象
2016/05/26 Javascript
Javascript设计模式之装饰者模式详解篇
2017/01/17 Javascript
Bootstrap的Carousel配合dropload.js实现移动端滑动切换图片
2017/03/10 Javascript
微信小游戏之使用three.js 绘制一个旋转的三角形
2019/06/10 Javascript
JavaScript实现简单的图片切换功能(实例代码)
2020/04/10 Javascript
[01:55]TI9显影之尘系列 - Evil Geniuses
2019/08/22 DOTA
python将xml xsl文件生成html文件存储示例讲解
2013/12/03 Python
python统计文本字符串里单词出现频率的方法
2015/05/26 Python
Python中的自省(反射)详解
2015/06/02 Python
深入讲解Python函数中参数的使用及默认参数的陷阱
2016/03/13 Python
python开发准备工作之配置虚拟环境(非常重要)
2019/02/11 Python
详解Django-restframework 之频率源码分析
2019/02/27 Python
Opencv-Python图像透视变换cv2.warpPerspective的示例
2019/04/11 Python
Kears+Opencv实现简单人脸识别
2019/08/28 Python
Python对wav文件的重采样实例
2020/02/25 Python
Python图像处理库PIL中图像格式转换的实现
2020/02/26 Python
Python坐标轴操作及设置代码实例
2020/06/04 Python
纯css3实现宠物小鸡实例代码
2018/10/08 HTML / CSS
日本最大的药妆连锁店:Matsukiyo松本清药妆店
2017/11/23 全球购物
C#如何调用Windows程序打开一个文档
2014/12/26 面试题
就业意向书范文
2014/04/01 职场文书
竞选演讲稿范文大全
2014/05/12 职场文书
网上祭英烈活动总结
2015/02/04 职场文书
公司员工违纪检讨书
2015/05/05 职场文书
小学少先队活动总结
2015/05/08 职场文书
学校禁毒宣传活动总结
2015/05/08 职场文书
运动会入场词
2015/07/18 职场文书
送给教师们,到底该如何写好教学反思?
2019/07/02 职场文书