浅谈克隆 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里的条件判断
Feb 27 Javascript
javascript遍历控件实例详细解析
Jan 10 Javascript
jquery插件开发之实现jquery手风琴功能分享
Mar 10 Javascript
js检测判断日期大于多少天的方法
May 04 Javascript
深入解析JavaScript中的arguments对象
Jun 12 Javascript
jQuery筛选数组之grep、each、inArray、map的用法及遍历json对象
Jun 20 Javascript
jQuery实现的checkbox级联选择下拉菜单效果示例
Dec 26 Javascript
如何写好一个vue组件,老夫的一年经验全在这了(推荐)
May 18 Javascript
Vue.js路由实现选项卡简单实例
Jul 24 Javascript
js+springMVC 提交数组数据到后台的实例
Sep 21 Javascript
详解小程序如何改变onLoad的执行时机
Nov 01 Javascript
原生js实现点击按钮复制内容到剪切板
Nov 19 Javascript
WebWorker 封装 JavaScript 沙箱详情
quickjs 封装 JavaScript 沙箱详情
Nov 02 #Javascript
js 数组 fill() 填充方法
浅谈 JavaScript 沙箱Sandbox
详解 TypeScript 枚举类型
Nov 02 #Javascript
前端JavaScript大管家 package.json
JavaScript 原型与原型链详情
You might like
建立文件交换功能的脚本(一)
2006/10/09 PHP
PHP中文汉字验证码
2007/04/08 PHP
PHP的几个常用数字判断函数代码
2012/04/24 PHP
phpExcel导出大量数据出现内存溢出错误的解决方法
2013/02/28 PHP
getimagesize获取图片尺寸实例
2014/11/15 PHP
php使用Cookie控制访问授权的方法
2015/01/21 PHP
支持中文、字母、数字的PHP验证码
2015/05/04 PHP
php阳历转农历优化版
2016/08/08 PHP
模拟电子签章盖章效果的jQuery插件源码
2013/06/24 Javascript
js简单实现删除记录时的提示效果
2013/12/05 Javascript
谈一谈javascript中继承的多种方式
2016/02/19 Javascript
JavaScript中0和""比较引发的问题
2016/05/26 Javascript
jQuery 如何实现一个滑动按钮开关
2016/12/01 Javascript
详解node-ccap模块生成captcha验证码
2017/07/01 Javascript
详解React Native 采用Fetch方式发送跨域POST请求
2017/11/15 Javascript
使用nodejs+express实现简单的文件上传功能
2017/12/27 NodeJs
Node.js Koa2使用JWT进行鉴权的方法示例
2018/08/17 Javascript
部署vue+Springboot前后端分离项目的步骤实现
2020/05/31 Javascript
vue实现循环滚动列表
2020/06/30 Javascript
解决echarts echarts数据动态更新和dataZoom被重置问题
2020/07/20 Javascript
用javascript实现倒计时效果
2021/02/09 Javascript
[44:40]Spirit vs Navi Supermajor小组赛 A组败者组第一轮 BO3 第一场 6.2
2018/06/03 DOTA
Python中的函数作用域
2018/05/07 Python
python3中的md5加密实例
2018/05/29 Python
详解python中的hashlib模块的使用
2019/04/22 Python
python实现二分查找算法
2020/09/18 Python
分享30个新鲜的CSS3打造的精美绚丽效果(附演示下载)
2012/12/28 HTML / CSS
CSS3 按钮边框动画的实现
2020/11/12 HTML / CSS
2014年教研活动总结范文
2014/04/26 职场文书
反对形式主义、官僚主义、享乐主义和奢靡之风整改措施
2014/09/17 职场文书
高中军训感想
2015/08/07 职场文书
八年级作文之感恩
2019/11/22 职场文书
Python带你从浅入深探究Tuple(基础篇)
2021/05/15 Python
go xorm框架的使用
2021/05/22 Golang
分享几种python 变量合并方法
2022/03/20 Python
win10清理dns缓存
2022/04/19 数码科技