浅谈克隆 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 相关文章推荐
如何实现浏览器上的右键菜单
Jul 10 Javascript
为指定元素增加样式的js代码
Dec 09 Javascript
js Date自定义函数 延迟脚本执行
Mar 10 Javascript
javascript使用call调用微信API
Dec 15 Javascript
JS实现显示带倒影的图片横排居中放大展示特效实例【测试可用】
Aug 23 Javascript
用js实现每隔一秒刷新时间的实例(含年月日时分秒)
Oct 25 Javascript
30分钟快速入门掌握ES6/ES2015的核心内容(上)
Apr 18 Javascript
仿vue-cli搭建属于自己的脚手架的方法步骤
Apr 17 Javascript
微信小程序上线发布流程图文详解
May 06 Javascript
vue实现路由懒加载及组件懒加载的方式
Jun 11 Javascript
Vue+Vuex实现自动登录的知识点详解
Mar 04 Javascript
浅谈Vue使用Cascader级联选择器数据回显中的坑
Oct 31 Javascript
WebWorker 封装 JavaScript 沙箱详情
quickjs 封装 JavaScript 沙箱详情
Nov 02 #Javascript
js 数组 fill() 填充方法
浅谈 JavaScript 沙箱Sandbox
详解 TypeScript 枚举类型
Nov 02 #Javascript
前端JavaScript大管家 package.json
JavaScript 原型与原型链详情
You might like
PHP与MySQL交互使用详解
2006/10/09 PHP
PHP CURL获取cookies模拟登录的方法
2013/11/04 PHP
PHP中创建和验证哈希的简单方法实探
2015/07/06 PHP
PHP基本语法实例总结
2016/09/09 PHP
JavaScript 应用技巧集合[推荐]
2009/08/30 Javascript
JS 删除字符串最后一个字符的实现代码
2014/02/20 Javascript
JS实现光滑展开合拢的菜单效果代码
2015/09/16 Javascript
基于jQuery实现表格内容的筛选功能
2016/08/21 Javascript
jquery radio的取值_radio的选中_radio的重置方法
2016/09/20 Javascript
AngularJS页面传参的5种方式
2017/04/01 Javascript
dts文件中删除一个node或属性的操作方法
2018/08/05 Javascript
解决vue-cli webpack打包后加载资源的路径问题
2018/09/25 Javascript
老生常谈进程线程协程那些事儿
2017/07/24 Python
python3使用scrapy生成csv文件代码示例
2017/12/28 Python
pytorch 把MNIST数据集转换成图片和txt的方法
2018/05/20 Python
[原创]Python入门教程5. 字典基本操作【定义、运算、常用函数】
2018/11/01 Python
对python多线程SSH登录并发脚本详解
2019/02/14 Python
python模拟鼠标点击和键盘输入的操作
2019/08/04 Python
python 模拟贷款卡号生成规则过程解析
2019/08/30 Python
python turtle 绘制太极图的实例
2019/12/18 Python
python实现简单飞行棋
2020/02/06 Python
Tensorflow tf.dynamic_partition矩阵拆分示例(Python3)
2020/02/07 Python
关于HTML5 Placeholder新标签低版本浏览器下不兼容的问题分析及解决办法
2016/01/27 HTML / CSS
捷克玩具商店:Bambule
2019/02/23 全球购物
Linux常见面试题
2016/10/04 面试题
岗位职责的定义
2013/11/10 职场文书
公司晚会策划方案
2014/05/17 职场文书
护理学专业求职信
2014/06/29 职场文书
开展党的群众路线教育实践活动情况汇报
2014/11/05 职场文书
学校党风廉政建设调研报告
2015/01/01 职场文书
幼儿园小班个人工作总结
2015/02/12 职场文书
职称评定个人总结
2015/03/05 职场文书
法人身份证明书
2015/06/18 职场文书
2016年清明节红领巾广播稿
2015/12/17 职场文书
学前班教学反思
2016/02/24 职场文书
Python经常使用的一些内置函数
2022/04/11 Python