浅谈克隆 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实现存储HTML字符串示例
Apr 21 Javascript
node.js中的console用法总结
Dec 15 Javascript
JavaScript对象数组如何按指定属性和排序方向进行排序
Jun 15 Javascript
JS控制静态页面传递参数并获取参数应用
Aug 10 Javascript
完美解决IE9浏览器出现的对象未定义问题
Sep 29 Javascript
jquery实现图片切换代码
Oct 13 Javascript
Angular2中select用法之设置默认值与事件详解
May 07 Javascript
React Native时间转换格式工具类分享
Oct 24 Javascript
JS中实现一个下载进度条及播放进度条的代码
Jun 10 Javascript
axios 实现post请求时把对象obj数据转为formdata
Oct 31 Javascript
Vue实现Layui的集成方法步骤
Apr 10 Javascript
Vue登录拦截 登录后继续跳转指定页面的操作
Aug 04 Javascript
WebWorker 封装 JavaScript 沙箱详情
quickjs 封装 JavaScript 沙箱详情
Nov 02 #Javascript
js 数组 fill() 填充方法
浅谈 JavaScript 沙箱Sandbox
详解 TypeScript 枚举类型
Nov 02 #Javascript
前端JavaScript大管家 package.json
JavaScript 原型与原型链详情
You might like
PHP __autoload()方法真的影响性能吗?
2012/03/30 PHP
PHP实现文件下载断点续传详解
2014/10/15 PHP
PHP利用超级全局变量$_GET来接收表单数据的实例
2016/11/05 PHP
thinkphp实现把数据库中的列的值存到下拉框中的方法
2017/01/20 PHP
YII框架中使用memcache的方法详解
2017/08/02 PHP
php实现数组重复数字统计实例
2018/09/30 PHP
基于jquery的给文章加入关键字链接
2010/10/26 Javascript
五段实用的js高级技巧
2011/12/20 Javascript
关于js里的this关键字的理解
2015/08/17 Javascript
jQuery实现自动切换播放的经典滑动门效果
2015/09/12 Javascript
详解JavaScript中常用的函数类型
2015/11/18 Javascript
百度坐标(BD09)、国测局坐标(火星坐标,GCJ02)、和WGS84坐标系之间的转换
2016/02/19 Javascript
Bootstrap零基础入门教程(二)
2016/07/18 Javascript
Vue.js 父子组件通讯开发实例
2016/09/06 Javascript
javascript iframe跨域详解
2016/10/26 Javascript
解析jquery easyui tree异步加载子节点问题
2017/03/08 Javascript
vue iview多张图片大图预览、缩放翻转
2019/07/13 Javascript
python算法学习之桶排序算法实例(分块排序)
2013/12/18 Python
Python中的defaultdict模块和namedtuple模块的简单入门指南
2015/04/01 Python
python实现的jpg格式图片修复代码
2015/04/21 Python
python好玩的项目—色情图片识别代码分享
2017/11/07 Python
Python基于递归实现电话号码映射功能示例
2018/04/13 Python
Python爬虫小技巧之伪造随机的User-Agent
2018/09/13 Python
Django objects的查询结果转化为json的三种方式的方法
2018/11/07 Python
终于搞懂了Keras中multiloss的对应关系介绍
2020/06/22 Python
Matplotlib 绘制饼图解决文字重叠的方法
2020/07/24 Python
CSS3中currentColor关键字的妙用
2016/02/27 HTML / CSS
手机银行营销方案
2014/03/14 职场文书
经理任命书模板
2014/06/06 职场文书
80后婚前协议书范本
2014/10/24 职场文书
无锡灵山大佛导游词
2015/02/09 职场文书
Go语言空白表示符_的实例用法
2021/07/04 Golang
MySQL中的隐藏列的具体查看
2021/09/04 MySQL
Spring Boot DevTools 全局配置学习指南
2022/03/31 Java/Android
Python识别花卉种类鉴定网络热门植物并自动整理分类
2022/04/08 Python
Windows Server 2016 配置 IIS 的详细步骤
2022/04/28 Servers