浅谈克隆 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判断密码强度(自写代码)
Sep 06 Javascript
浅析JQuery UI Dialog的样式设置问题
Dec 18 Javascript
JS表的模拟方法
Feb 05 Javascript
jQuery插件jcrop+Fileapi完美实现图片上传+裁剪+预览的代码分享
Apr 22 Javascript
教你使用javascript简单写一个页面模板引擎
May 05 Javascript
jQuery+jsp下拉框联动获取本地数据的方法(附源码)
Dec 03 Javascript
JavaScript中的this使用详解
Jul 27 Javascript
详解angular element()方法使用
Apr 08 Javascript
使用vue制作FullPage页面滚动效果
Aug 21 Javascript
详解vue-cli项目中的proxyTable跨域问题小结
Feb 09 Javascript
Vue自定义属性实例分析
Feb 23 Javascript
基于vue实现web端超大数据量表格的卡顿解决
Apr 02 Javascript
WebWorker 封装 JavaScript 沙箱详情
quickjs 封装 JavaScript 沙箱详情
Nov 02 #Javascript
js 数组 fill() 填充方法
浅谈 JavaScript 沙箱Sandbox
详解 TypeScript 枚举类型
Nov 02 #Javascript
前端JavaScript大管家 package.json
JavaScript 原型与原型链详情
You might like
php遍历所有文件及文件夹的方法深入解析
2013/06/08 PHP
php简单定时执行任务的实现方法
2015/02/23 PHP
CodeIgniter读写分离实现方法详解
2016/01/20 PHP
javascript中巧用“闭包”实现程序的暂停执行功能
2007/04/04 Javascript
Mootools 1.2教程 Fx.Tween的使用
2009/09/15 Javascript
jquery调用wcf并展示出数据的方法
2011/07/07 Javascript
jQuery实现动画效果的实例代码
2013/05/07 Javascript
深入理解javascript动态插入技术
2013/11/12 Javascript
轻松创建nodejs服务器(5):事件处理程序
2014/12/18 NodeJs
JavaScript实现彩虹文字效果的方法
2015/04/16 Javascript
改变checkbox默认选中状态及取值的实现代码
2016/05/26 Javascript
利用jquery获取select下拉框的值
2016/11/23 Javascript
在Vue项目中使用d3.js的实例代码
2018/05/01 Javascript
js 数据类型判断的方法
2020/12/03 Javascript
[54:53]2014 DOTA2国际邀请赛中国区预选赛 LGD-GAMING VS CIS 第二场
2014/05/23 DOTA
[01:33]真香警告!DOTA2勇士令状不朽珍藏Ⅱ饰品欣赏
2018/06/26 DOTA
python连接oracle数据库实例
2014/10/17 Python
详细介绍Python的鸭子类型
2016/09/12 Python
python脚本替换指定行实现步骤
2017/07/11 Python
Python延时操作实现方法示例
2018/08/14 Python
python3.x实现base64加密和解密
2019/03/28 Python
实例详解python函数的对象、函数嵌套、名称空间和作用域
2019/05/31 Python
python修改字典键(key)的方法
2019/08/05 Python
Python 脚本的三种执行方式小结
2019/12/21 Python
Python tkinter实现简单加法计算器代码实例
2020/05/13 Python
Python-openpyxl表格读取写入的案例详解
2020/11/02 Python
canvas绘制表情包的示例代码
2018/07/09 HTML / CSS
美国最大的存储市场:SpareFoot
2018/07/23 全球购物
长曲棍球装备:Lacrosse Monkey
2020/12/02 全球购物
双拥工作宣传标语
2014/06/26 职场文书
党员对照检查剖析材料
2014/10/13 职场文书
安全生产会议制度
2015/08/06 职场文书
思想品德课教学反思
2016/02/24 职场文书
安全责任协议书范本
2016/03/23 职场文书
python开发飞机大战游戏
2021/07/15 Python
Windows server 2016服务器基本设置
2022/08/14 Servers