浅谈克隆 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 相关文章推荐
Track Image Loading效果代码分析
Aug 13 Javascript
利用404错误页面实现UrlRewrite的实现代码
Aug 20 Javascript
jQuery开发者都需要知道的5个小技巧
Jan 08 Javascript
JavaScript实用技巧(一)
Aug 16 Javascript
js下将字符串当函数执行的方法
Jul 13 Javascript
javascript+xml实现简单图片轮换(只支持IE)
Dec 23 Javascript
javascript中String对象的slice()方法分析
Dec 20 Javascript
详解JavaScript中jQuery和Ajax以及JSONP的联合使用
Aug 13 Javascript
jquery validate表单验证的基本用法入门
Jan 18 Javascript
微信小程序 navigation API实例详解
Oct 02 Javascript
jQuery实现的点击按钮改变样式功能示例
Jul 21 jQuery
解决bootstrap模态框数据缓存的问题方法
Aug 10 Javascript
WebWorker 封装 JavaScript 沙箱详情
quickjs 封装 JavaScript 沙箱详情
Nov 02 #Javascript
js 数组 fill() 填充方法
浅谈 JavaScript 沙箱Sandbox
详解 TypeScript 枚举类型
Nov 02 #Javascript
前端JavaScript大管家 package.json
JavaScript 原型与原型链详情
You might like
PHP生成随机字符串(3种方法)
2015/09/25 PHP
PHP7新增函数
2021/03/09 PHP
javascript编程起步(第四课)
2007/01/10 Javascript
javascript读取RSS数据
2007/01/20 Javascript
网站404页面3秒后跳到首页的实例代码
2013/08/16 Javascript
jquery阻止冒泡事件使用模拟事件
2013/09/06 Javascript
JQuery实现鼠标滑过显示导航下拉列表
2013/09/12 Javascript
JS按字节截取字符长度实例
2013/11/20 Javascript
JavaScript获取页面中第一个锚定文本的方法
2015/04/03 Javascript
理解Javascript的动态语言特性
2015/06/17 Javascript
jQuery获取cookie值及删除cookie用法实例
2016/04/15 Javascript
JS去掉字符串前后空格、阻止表单提交的实现代码
2017/06/08 Javascript
jquery在启动页面时,自动加载数据的实例
2018/01/22 jQuery
jQuery控制input只能输入数字和两位小数的方法
2019/05/16 jQuery
php结合js实现多条件组合查询
2019/05/28 Javascript
vue实现简单的日历效果
2020/09/24 Javascript
详解vue v-model
2020/08/31 Javascript
VUE中setTimeout和setInterval自动销毁案例
2020/09/07 Javascript
[01:35]2018完美盛典章节片——共竞
2018/12/17 DOTA
[01:04:49]KG vs LGD 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
Python制作CSDN免积分下载器
2015/03/10 Python
Python中super()函数简介及用法分享
2016/07/11 Python
python中的break、continue、exit()、pass全面解析
2017/08/05 Python
详解python里使用正则表达式的分组命名方式
2017/10/24 Python
详解从Django Rest Framework响应中删除空字段
2019/01/11 Python
Python批量将图片灰度化的实现代码
2020/04/11 Python
Superdry瑞典官网:英国日本街头风品牌
2017/05/17 全球购物
Theory美国官网:后现代都市风时装品牌
2018/05/09 全球购物
加拿大在线眼镜零售商:SmartBuyGlasses加拿大
2019/05/25 全球购物
办公室前台的岗位职责
2013/12/20 职场文书
捐助倡议书范文
2014/04/15 职场文书
文明礼仪演讲稿
2014/05/12 职场文书
公安机关纪律作风整顿个人剖析材料材料
2014/10/10 职场文书
护理专业自我评价
2015/03/11 职场文书
django 认证类配置实现
2021/11/11 Python
Mysql多层子查询示例代码(收藏夹案例)
2022/03/31 MySQL