浅谈克隆 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 相关文章推荐
用jscript实现新建和保存一个word文档
Jun 15 Javascript
JavaScript继承方式实例
Oct 29 Javascript
jquery 表格排序、实时搜索表格内容(附图)
May 19 Javascript
DOM基础教程之使用DOM设置文本框
Jan 20 Javascript
JavaScript中的splice方法用法详解
Jul 20 Javascript
基于JS组件实现拖动滑块验证功能(代码分享)
Nov 18 Javascript
详解Vue使用 vue-cli 搭建项目
Apr 20 Javascript
利用vue组件自定义v-model实现一个Tab组件方法示例
Dec 06 Javascript
React教程之封装一个Portal可复用组件的方法
Jan 02 Javascript
微信小程序自定义组件的实现方法及自定义组件与页面间的数据传递问题
Oct 09 Javascript
Vue 刷新当前路由的实现代码
Sep 26 Javascript
html2canvas属性和使用方法以及如何使用html2canvas将HTML内容写入Canvas生成图片
Jan 12 Javascript
WebWorker 封装 JavaScript 沙箱详情
quickjs 封装 JavaScript 沙箱详情
Nov 02 #Javascript
js 数组 fill() 填充方法
浅谈 JavaScript 沙箱Sandbox
详解 TypeScript 枚举类型
Nov 02 #Javascript
前端JavaScript大管家 package.json
JavaScript 原型与原型链详情
You might like
PHP4在Windows2000下的安装
2006/10/09 PHP
用PHP的ob_start();控制您的浏览器cache!
2007/02/14 PHP
php使用imagick模块实现图片缩放、裁剪、压缩示例
2014/04/17 PHP
PHP使用Alexa API获取网站的Alexa排名例子
2014/06/12 PHP
php实现获取文件mime类型的方法
2015/02/11 PHP
php校验表单检测字段是否为空的方法
2015/03/20 PHP
js post方式传递提交的实现代码
2010/05/31 Javascript
映彩衣的js随笔(js图片切换效果)
2011/07/31 Javascript
js URL参数的拼接方法比较
2012/02/15 Javascript
关于IE BUG与字符串截取substr的解决办法
2013/04/10 Javascript
js保留小数点后几位的写法
2014/01/03 Javascript
JavaScript在for循环中绑定事件解决事件参数不同的情况
2014/01/20 Javascript
javascript多物体运动实现方法分析
2016/01/08 Javascript
跨域请求的完美解决方法(JSONP, CORS)
2016/06/12 Javascript
JavaScript 输出显示内容(document.write、alert、innerHTML、console.log)
2016/12/14 Javascript
vue快捷键与基础指令详解
2017/06/01 Javascript
vue+ElementUI实现订单页动态添加产品数据效果实例代码
2017/07/13 Javascript
关于在mongoose中填充外键的方法详解
2017/08/14 Javascript
vue使用video插件vue-video-player的示例
2020/10/03 Javascript
通过5个知识点轻松搞定Python的作用域
2016/09/09 Python
python数据结构链表之单向链表(实例讲解)
2017/07/25 Python
Python内建函数之raw_input()与input()代码解析
2017/10/26 Python
Python使用matplotlib填充图形指定区域代码示例
2018/01/16 Python
深入分析python数据挖掘 Json结构分析
2018/04/21 Python
python 去除txt文本中的空格、数字、特定字母等方法
2018/07/24 Python
对python3 中方法各种参数和返回值详解
2018/12/15 Python
python 五子棋如何获得鼠标点击坐标
2019/11/04 Python
将python文件打包exe独立运行程序方法详解
2020/02/12 Python
如何使用python代码操作git代码
2020/02/29 Python
prAna官网:瑜伽、旅行和冒险服装
2019/03/10 全球购物
合作协议书格式
2014/08/19 职场文书
求职自荐信怎么写
2015/03/04 职场文书
英文辞职信范文
2015/05/13 职场文书
2019职场单身人才调研报告:互联网行业单身比例最高
2019/08/07 职场文书
一次MySQL启动导致的事故实战记录
2021/09/15 MySQL
使用python创建股票的时间序列可视化分析
2022/03/03 Python