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 相关文章推荐
js 获取浏览器高度和宽度值(多浏览器)
Sep 02 Javascript
jQuery右键菜单contextMenu使用实例
Sep 28 Javascript
有关于eclipse配置spket需要注意的一些地方
Apr 07 Javascript
JavaScript初学者建议:不要去管浏览器兼容
Feb 04 Javascript
[将免费进行到底]在Amazon的一年免费服务器上安装Node.JS, NPM和OurJS博客
Aug 18 Javascript
JavaScript模块规范之AMD规范和CMD规范
Oct 27 Javascript
JavaScript中的数组遍历forEach()与map()方法以及兼容写法介绍
May 19 Javascript
JS实现获取来自百度,Google,soso,sogou关键词的方法
Dec 21 Javascript
jquery select插件异步实时搜索实例代码
Oct 20 jQuery
基于mpvue的小程序项目搭建的步骤
May 22 Javascript
Javascript实现动态时钟效果
Nov 17 Javascript
使用react+redux实现计数器功能及遇到问题
Jun 02 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 异常处理实现代码
2009/03/10 PHP
PHP的构造方法,析构方法和this关键字详细介绍
2013/10/22 PHP
linux实现php定时执行cron任务详解
2013/12/24 PHP
php中创建和调用webservice接口示例
2014/07/25 PHP
php使用CURL模拟GET与POST向微信接口提交及获取数据的方法
2016/09/23 PHP
深入理解PHP的远程多会话调试
2017/09/21 PHP
PHP实现生成模糊图片的方法示例
2017/12/21 PHP
PHP设计模式之模板方法模式定义与用法详解
2018/04/02 PHP
关于PHP求解三数之和问题详析
2020/11/09 PHP
JavaScript之自定义类型
2012/05/04 Javascript
js判断页面中是否有指定控件的简单实例
2014/03/04 Javascript
JavaScript bold方法入门实例(把指定文字显示为粗体)
2014/10/17 Javascript
JavaScript程序中的流程控制语句用法总结
2016/05/23 Javascript
jQuery实现点击弹出背景变暗遮罩效果实例代码
2016/06/24 Javascript
jQuery动态创建元素以及追加节点的实现方法
2016/10/20 Javascript
Bootstrap基本插件学习笔记之Alert警告框(20)
2016/12/08 Javascript
jquery实现异步加载图片(懒加载图片一种方式)
2017/04/24 jQuery
Ionic3实现图片瀑布流布局
2017/08/09 Javascript
微信小程序实现选项卡功能
2020/06/19 Javascript
详解vue 数组和对象渲染问题
2018/09/21 Javascript
利用weixin-java-miniapp生成小程序码并直接返回图片文件流的方法
2019/03/29 Javascript
express框架中使用jwt实现验证的方法
2019/08/25 Javascript
基于js实现数组相邻元素上移下移
2020/05/19 Javascript
vue项目实现减少app.js和vender.js的体积操作
2020/11/12 Javascript
对python中return和print的一些理解
2017/08/18 Python
python中map的基本用法示例
2018/09/10 Python
Python3 requests文件下载 期间显示文件信息和下载进度代码实例
2019/08/16 Python
python批量处理多DNS多域名的nslookup解析实现
2020/06/28 Python
Probikekit欧盟:在线公路自行车专家
2019/07/12 全球购物
女性时尚网购:Chic Me
2019/07/30 全球购物
2019年.net常见面试问题
2012/02/12 面试题
学校安全生产月活动总结
2014/07/05 职场文书
弘扬焦裕禄精神走群众路线思想汇报
2014/09/12 职场文书
开天辟地观后感
2015/06/09 职场文书
numpy array找出符合条件的数并赋值的示例代码
2022/06/01 Python
JavaScript实现简单的音乐播放器
2022/08/14 Javascript