浅谈克隆 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 相关文章推荐
JavaScript 解析Json字符串的性能比较分析代码
Dec 16 Javascript
javascript使用正则获取url上的某个参数
Sep 04 Javascript
jQuery判断数组是否包含了指定的元素
Mar 10 Javascript
Node.js读取文件内容示例
Mar 07 Javascript
js判断是否是手机页面
Mar 17 Javascript
解决vue+webpack打包路径的问题
Mar 06 Javascript
微信小程序自定义键盘 内部虚拟支付
Dec 20 Javascript
如何使用electron-builder及electron-updater给项目配置自动更新
Dec 24 Javascript
使用webpack编译es6代码的方法步骤
Apr 28 Javascript
中高级前端必须了解的JS中的内存管理(推荐)
Jul 04 Javascript
javascript 易错知识点实例小结
Apr 25 Javascript
Node.js中出现未捕获异常的处理方法
Jun 29 Javascript
WebWorker 封装 JavaScript 沙箱详情
quickjs 封装 JavaScript 沙箱详情
Nov 02 #Javascript
js 数组 fill() 填充方法
浅谈 JavaScript 沙箱Sandbox
详解 TypeScript 枚举类型
Nov 02 #Javascript
前端JavaScript大管家 package.json
JavaScript 原型与原型链详情
You might like
phpmyadmin导入(import)文件限制的解决办法
2009/12/11 PHP
PHP匿名函数和use子句用法实例
2016/03/16 PHP
Yii2框架BootStrap样式的深入理解
2016/11/07 PHP
pjblog修改技巧汇总
2007/03/12 Javascript
基于JQuery的cookie插件
2010/04/07 Javascript
Javascript 面向对象之重载
2010/05/04 Javascript
JavaScript 和 Java 的区别浅析
2013/07/31 Javascript
js下拉框二级关联菜单效果代码具体实现
2013/08/03 Javascript
jqeury-easyui-layout问题解决方法
2014/03/24 Javascript
js实现类似jquery里animate动画效果的方法
2015/04/10 Javascript
javascript中的 object 和 function小结
2016/08/14 Javascript
js实现省市级联效果分享
2017/08/10 Javascript
Vue 组件(component)教程之实现精美的日历方法示例
2018/01/08 Javascript
微信小程序如何获取openid及用户信息
2018/01/26 Javascript
使用layer弹窗,制作编辑User信息页面的方法
2019/09/27 Javascript
Python+Django在windows下的开发环境配置图解
2009/11/11 Python
python基础教程之Filter使用方法
2017/01/17 Python
python使用pil库实现图片合成实例代码
2018/01/20 Python
python 读取.csv文件数据到数组(矩阵)的实例讲解
2018/06/14 Python
使用Python对微信好友进行数据分析
2018/06/27 Python
python随机在一张图像上截取任意大小图片的方法
2019/01/24 Python
Python 实现opencv所使用的图片格式与 base64 转换
2020/01/09 Python
CSS3圆角和渐变2种常用功能详解
2016/01/06 HTML / CSS
HTML4和HTML5之间除了相似以外的10个主要不同
2012/12/13 HTML / CSS
HTML5在线预览PDF的示例代码
2017/09/14 HTML / CSS
IdealFit官方网站:女性蛋白质、补充剂和运动服装
2019/03/24 全球购物
施华洛世奇西班牙官网:SWAROVSKI西班牙
2019/06/06 全球购物
Java中会存在内存泄漏吗,请简单描述
2016/12/22 面试题
批评与自我批评材料
2014/02/15 职场文书
2014物价局民主生活会对照检查材料思想汇报
2014/09/24 职场文书
民事二审代理词
2015/05/25 职场文书
飞屋环游记观后感
2015/06/08 职场文书
先进教师个人主要事迹材料
2015/11/03 职场文书
《月光曲》教学反思
2016/02/16 职场文书
详解运行Python的神器Jupyter Notebook
2021/06/03 Python
Spring Security使用单点登录的权限功能
2022/04/03 Java/Android