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 - HTML的request类
Jul 15 Javascript
Auntion-TableSort国人写的一个javascript表格排序的东西
Nov 12 Javascript
js弹出层(jQuery插件形式附带reLoad功能)
Apr 12 Javascript
js实现简单鼠标跟随效果的方法
Apr 10 Javascript
jQuery匹配文档链接并添加class的方法
Jun 26 Javascript
jquery实现像栅栏一样左右滑出式二级菜单效果代码
Aug 24 Javascript
js实现简单排列组合的方法
Jan 27 Javascript
简单理解JavaScript中的封装与继承特性
Mar 19 Javascript
用headjs来管理和加载js 提高网站加载速度
Nov 29 Javascript
Vue中使用ElementUI使用第三方图标库iconfont的示例
Oct 11 Javascript
js中async函数结合promise的小案例浅析
Apr 14 Javascript
JS中的变量作用域(console版)
Jul 18 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
星际中的相关伤害
2020/03/04 星际争霸
php中使用preg_match_all匹配文章中的图片
2013/02/06 PHP
php如何获取文件的扩展名
2015/10/28 PHP
PHP实现QQ登录实例代码
2016/01/14 PHP
Yii控制器中filter过滤器用法分析
2016/07/15 PHP
微信公众号开发之文本消息自动回复php代码
2016/08/08 PHP
PHP多种序列化/反序列化的方法详解
2017/06/23 PHP
DEFER怎么用?
2006/07/01 Javascript
用于table内容排序
2006/07/21 Javascript
JavaScript 事件的一些重要说明
2009/10/25 Javascript
基于jQuery的前端数据通用验证库
2011/08/08 Javascript
Jquery绑定事件(bind和live的区别介绍)
2013/08/23 Javascript
Javascript 按位与运算符 (&)使用介绍
2014/02/04 Javascript
javascript调试之DOM断点调试法使用技巧分享
2014/04/15 Javascript
微信小程序 WXML、WXSS 和JS介绍及详解
2016/10/08 Javascript
ionic 自定义弹框效果
2017/06/27 Javascript
JS+php后台实现文件上传功能详解
2019/03/02 Javascript
基于vue实现图片验证码倒计时60s功能
2019/12/10 Javascript
js实现tab栏切换效果
2020/08/02 Javascript
[03:49]DOTA2英雄基础教程 光之守卫
2014/01/14 DOTA
[01:42]TI4西雅图DOTA2前线报道 第一顿早饭哦
2014/07/08 DOTA
浅谈Python中的闭包
2015/07/08 Python
python一键去抖音视频水印工具
2018/09/14 Python
对pandas通过索引提取dataframe的行方法详解
2019/02/01 Python
Python流行ORM框架sqlalchemy安装与使用教程
2019/06/04 Python
如何在pycharm中安装第三方包
2020/10/27 Python
Python 实现劳拉游戏的实例代码(四连环、重力四子棋)
2021/03/03 Python
世嘉游戏英国官方商店:SEGA Shop UK
2019/09/20 全球购物
车间副主任岗位职责
2013/12/24 职场文书
2014年教师政治学习材料
2014/06/02 职场文书
大学生暑期社会实践证明范本
2014/10/24 职场文书
骨干教师事迹材料
2014/12/17 职场文书
个人委托函范文
2015/01/29 职场文书
2016中考冲刺决心书
2015/09/22 职场文书
刚学完怎么用Python实现定时任务,转头就跑去撩妹!
2021/06/05 Python
浅谈mysql增加索引不生效的几种情况
2021/06/23 MySQL