浅谈克隆 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 设计模式之组合模式解析
Apr 09 Javascript
3款实用的在线JS代码工具(国外)
Mar 15 Javascript
读取input:file的路径并显示本地图片的方法
Sep 23 Javascript
js调用浏览器打印模块实现点击按钮触发自定义函数
Mar 21 Javascript
Javascript中的高阶函数介绍
Mar 15 Javascript
javascript闭包的理解
Apr 01 Javascript
Treegrid的动态加载实例代码
Apr 29 Javascript
Node.js对MongoDB数据库实现模糊查询的方法
May 03 Javascript
jQuery实现在HTML文档加载完毕后自动执行某个事件的方法
May 08 jQuery
jQuery easyui datagird编辑行删除行功能的实现代码
Sep 20 jQuery
webpack打包非模块化js的方法
Oct 24 Javascript
jQuery实现条件搜索查询、实时取值及升降序排序的方法分析
May 04 jQuery
WebWorker 封装 JavaScript 沙箱详情
quickjs 封装 JavaScript 沙箱详情
Nov 02 #Javascript
js 数组 fill() 填充方法
浅谈 JavaScript 沙箱Sandbox
详解 TypeScript 枚举类型
Nov 02 #Javascript
前端JavaScript大管家 package.json
JavaScript 原型与原型链详情
You might like
基于PHP对XML的操作详解
2013/06/07 PHP
php实现两表合并成新表并且有序排列的方法
2014/12/05 PHP
SAE实时日志接口SDK用法示例
2016/10/09 PHP
番茄的表单验证类代码修改版
2008/07/18 Javascript
jquery 弹出登录窗口实现代码
2009/12/24 Javascript
Confirmer JQuery确认对话框组件
2010/06/09 Javascript
javascript使用正则控制input输入框允许输入的值方法大全
2014/06/19 Javascript
JS中实现简单Formatter函数示例代码
2014/08/19 Javascript
JavaScript对象反射用法实例
2015/04/17 Javascript
Jquery 分页插件之Jquery Pagination
2015/08/25 Javascript
jquery实现未经美化的简洁TAB菜单效果
2015/08/28 Javascript
jquery实现的Accordion折叠面板效果代码
2015/09/02 Javascript
JS+CSS实现电子商务网站导航模板效果代码
2015/09/10 Javascript
原生JS实现旋转木马式图片轮播插件
2016/04/25 Javascript
Vue过滤器的用法和自定义过滤器使用
2017/02/08 Javascript
JS实现div模块的截图并下载功能
2017/10/17 Javascript
javascript性能优化之分时函数的介绍
2018/03/28 Javascript
解决vue数组中对象属性变化页面不渲染问题
2018/08/09 Javascript
vuex中store存储store.commit和store.dispatch的用法
2020/07/24 Javascript
自动化Nginx服务器的反向代理的配置方法
2015/06/28 Python
Python面向对象之继承原理与用法案例分析
2019/12/31 Python
使用Pytorch来拟合函数方式
2020/01/14 Python
ipython jupyter notebook中显示图像和数学公式实例
2020/04/15 Python
python爬取youtube视频的示例代码
2021/03/03 Python
日本酒店、民宿、温泉旅馆、当地旅行团中文预订:e路东瀛
2019/12/09 全球购物
会计电算化专业个人的自我评价
2013/11/24 职场文书
老师自我鉴定范文
2013/12/25 职场文书
公益活动策划方案
2014/01/09 职场文书
立志成才演讲稿
2014/09/04 职场文书
2014年教务工作总结
2014/12/03 职场文书
2015年新农合工作总结
2015/03/30 职场文书
五星级酒店前台接待岗位职责
2015/04/02 职场文书
创业项目大全(适合在家创业的项目)
2019/08/15 职场文书
Go语言操作数据库及其常规操作的示例代码
2021/04/21 Golang
Java用自带的Image IO给图片添加水印
2021/06/15 Java/Android
Python办公自动化之教你如何用Python将任意文件转为PDF格式
2021/06/28 Python