浅谈克隆 JavaScript


Posted in Javascript onNovember 02, 2021

1、浅克隆

浅克隆无法copy数组和对象

var obj = {
    name : "abs",
    age : '18',
    sex : 'male'
}
var obj1 = {}
function clone(Origin,target) {
    target = target || {};//防止用户不输入target
    for(var k in Origin){
        target[k] = Origin[k];
    }
}
clone(obj,obj1);

2、深克隆

先判断它是什么,原始值,数组还是对象,分别处理

  • 遍历对象
  • 是原始值直接copy
  • 不是原始值判断是数组还是对象
  • 是数组建空数组
  • 是对象建空对象
  • 建立了之后再遍历一遍原始对象或数组里是啥
  • 递归
var obj = {
    name : 'lin',
    age : '18',
    sex : 'male',
    card : [1,2,3,4],
    wife : {
        name : 'bcsds',
        son : {
            name : 'aaa'
        },
        age : '23'
    }
}
var obj1 = {}
//原始值和对象数组typeof返回值有区别
function deepClone(origin,target) {
    target = target || {};
    for(var k in origin) {
        if(origin.hasOwnProperty(k)){
            if(typeof(origin[k]) == 'object') {
                if(Object.prototype.toString.call(origin[k]) == '[object Array]') {
                    target[k] = [];
                }else {
                    target[k] = {};
                }
                deepClone(origin[k],target[k]);
            }else {
                target[k] = origin[k];
            }
        }
    }
}
deepClone(obj,obj1);
Javascript 相关文章推荐
去掉gridPanel表头全选框的小例子
Jul 18 Javascript
javascript loadScript异步加载脚本示例讲解
Nov 14 Javascript
js对象转json数组的简单实现案例
Feb 28 Javascript
页面向下滚动ajax获取数据的实现方法(兼容手机)
May 24 Javascript
Angular2 环境配置详细介绍
Sep 21 Javascript
jQuery元素选择器实例代码
Feb 06 Javascript
原生js实现选项卡功能
Mar 08 Javascript
关于vue-router的beforeEach无限循环的问题解决
Sep 09 Javascript
Js利用prototype自定义数组方法示例
Oct 20 Javascript
小程序封装wx.request请求并创建接口管理文件的实现
Apr 29 Javascript
在JavaScript中实现链式调用的实现
Dec 24 Javascript
基于javascript实现碰撞检测
Mar 12 Javascript
WebWorker 封装 JavaScript 沙箱详情
quickjs 封装 JavaScript 沙箱详情
Nov 02 #Javascript
js 数组 fill() 填充方法
浅谈 JavaScript 沙箱Sandbox
详解 TypeScript 枚举类型
Nov 02 #Javascript
前端JavaScript大管家 package.json
JavaScript 原型与原型链详情
You might like
php中批量替换文件名的实现代码
2011/07/20 PHP
PHP错误Allowed memory size of 67108864 bytes exhausted的3种解决办法
2014/07/28 PHP
phpstorm配置Xdebug进行调试PHP教程
2014/12/01 PHP
在Win2003(64位)中配置IIS6+PHP5.2.17+MySQL5.5的运行环境
2016/04/04 PHP
Zend Framework教程之Zend_Helpers动作助手ViewRenderer用法详解
2016/07/20 PHP
PHP实现的pdo连接数据库并插入数据功能简单示例
2019/03/30 PHP
某人初学javascript的时候写的学习笔记
2010/12/30 Javascript
javascript中兼容主流浏览器的动态生成iframe方法
2014/05/05 Javascript
javascript setinterval 的正确语法如何书写
2014/06/17 Javascript
JS动态显示表格上下frame的方法
2015/03/31 Javascript
浅谈js继承的实现及公有、私有、静态方法的书写
2016/10/28 Javascript
基于Bootstrap的网页设计实例
2017/03/01 Javascript
一篇看懂vuejs的状态管理神器 vuex状态管理模式
2017/04/20 Javascript
JavaScript实现单例模式实例分享
2017/12/22 Javascript
vue中的ref和$refs的使用
2018/11/22 Javascript
Angular 多级路由实现登录页面跳转(小白教程)
2019/11/19 Javascript
vuejs实现下拉框菜单选择
2020/10/23 Javascript
[04:54]DOTA2 2017国际邀请赛:上届冠军WINGS采访短片
2017/08/09 DOTA
[01:01:43]EG vs VP 2018国际邀请赛淘汰赛BO3 第二场 8.24
2018/08/25 DOTA
Python3中的列表,元组,字典,字符串相关知识小结
2017/11/10 Python
python 实现在Excel末尾增加新行
2018/05/02 Python
Python判断两个list是否是父子集关系的实例
2018/05/04 Python
python隐藏终端执行cmd命令的方法
2019/06/24 Python
使用TensorFlow实现简单线性回归模型
2019/07/19 Python
djano一对一、多对多、分页实例代码
2019/08/16 Python
丝芙兰美国官网:SEPHORA美国
2016/08/03 全球购物
欧洲最大的品牌水上运动服装和设备在线零售商:Wuituit Outlet
2018/05/05 全球购物
瑞典的玛丽小姐:Miss Mary of Sweden
2019/02/13 全球购物
竞聘演讲稿范文
2014/01/12 职场文书
投资合作协议书
2014/04/17 职场文书
珠宝的促销活动方案
2014/08/31 职场文书
如何签定毕业生就业协议书
2014/09/28 职场文书
小石潭记导游词
2015/02/03 职场文书
英文版辞职信
2015/02/28 职场文书
特种设备安全管理制度
2015/08/06 职场文书
pytorch损失反向传播后梯度为none的问题
2021/05/12 Python