浅谈克隆 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 相关文章推荐
Jquery 动态循环输出表格具体方法
Nov 23 Javascript
如何书写高质量jQuery代码(使用jquery性能问题)
Jun 30 Javascript
一个JavaScript递归实现反转数组字符串的实例
Oct 14 Javascript
node.js中的fs.symlink方法使用说明
Dec 15 Javascript
node.js中的fs.existsSync方法使用说明
Dec 17 Javascript
JS回调函数简单用法示例
Feb 09 Javascript
基于React实现表单数据的添加和删除详解
Mar 14 Javascript
微信小程序自定义导航隐藏和显示功能
Jun 13 Javascript
浅谈用Webpack路径压缩图片上传尺寸获取的问题
Feb 22 Javascript
jQuery仿移动端支付宝键盘的实现代码
Aug 15 jQuery
Node.js一行代码实现静态文件服务器的方法步骤
May 07 Javascript
js实现车辆管理系统
Aug 26 Javascript
WebWorker 封装 JavaScript 沙箱详情
quickjs 封装 JavaScript 沙箱详情
Nov 02 #Javascript
js 数组 fill() 填充方法
浅谈 JavaScript 沙箱Sandbox
详解 TypeScript 枚举类型
Nov 02 #Javascript
前端JavaScript大管家 package.json
JavaScript 原型与原型链详情
You might like
基于mysql的bbs设计(三)
2006/10/09 PHP
PHP5.2中date()函数显示时间与北京时间相差8小时的解决办法
2009/05/28 PHP
PHP curl 并发最佳实践代码分享
2012/09/05 PHP
用PHP实现 上一篇、下一篇的代码
2012/09/29 PHP
PHP中使用imagick生成PSD文件缩略图教程
2015/01/26 PHP
深入浅出讲解:php的socket通信原理
2016/12/03 PHP
浅谈Yii乐观锁的使用及原理
2017/07/25 PHP
用Laravel Sms实现laravel短信验证码的发送的实现
2018/11/29 PHP
JavaScript判断窗口是否最小化的代码(跨浏览器)
2010/08/01 Javascript
简单漂亮的js弹窗可自由拖拽且兼容大部分浏览器
2013/10/22 Javascript
js读取被点击次数的简单实例(从数据库中读取)
2014/03/07 Javascript
JavaScript闭包函数访问外部变量的方法
2014/08/27 Javascript
javascript设计模式Constructor(构造器)模式
2016/08/19 Javascript
JavaScript实战(原生range和自定义特效)简单实例
2016/08/21 Javascript
JavaScript使用Range调色及透明度实例
2016/09/25 Javascript
jQuery电话号码验证实例
2017/01/05 Javascript
Vuex之理解Mutations的用法实例
2017/04/19 Javascript
浅谈在koa2中实现页面渲染的全局数据
2017/10/09 Javascript
微信小程序实现简单的select下拉框
2020/11/23 Javascript
vuex的数据渲染与修改浅析
2020/11/26 Vue.js
js前端对于大量数据的展示方式及处理方法
2020/12/02 Javascript
[02:27]DOTA2英雄基础教程 莱恩
2014/01/17 DOTA
一则python3的简单爬虫代码
2014/05/26 Python
tensorflow实现图像的裁剪和填充方法
2018/07/27 Python
Python使用ctypes调用C/C++的方法
2019/01/29 Python
pyqt5 comboBox获得下标、文本和事件选中函数的方法
2019/06/14 Python
导入tensorflow:ImportError: libcublas.so.9.0 报错
2020/01/06 Python
Python3打包exe代码2种方法实例解析
2020/02/17 Python
css3 border-image使用说明
2010/06/23 HTML / CSS
Pandora德国官网:购买潘多拉手链、戒指、项链和耳环
2020/02/20 全球购物
小学庆六一活动方案
2014/02/28 职场文书
宣传活动总结范文
2014/07/01 职场文书
2014年路政工作总结
2014/12/10 职场文书
北京导游词
2015/02/12 职场文书
运动会广播稿50字
2015/08/19 职场文书
聘任协议书(挂靠)
2015/09/21 职场文书