浅谈克隆 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 相关文章推荐
jquery indexOf使用方法
Aug 19 Javascript
jquery实现树形二级菜单实例代码
Nov 20 Javascript
js判断横竖屏及禁止浏览器滑动条示例
Apr 29 Javascript
JavaScript数组各种常见用法实例分析
Aug 04 Javascript
jquery实现浮动在网页右下角的彩票开奖公告窗口代码
Sep 04 Javascript
简单实现兼容各大浏览器的js复制内容到剪切板
Sep 09 Javascript
Javascript技术栈中的四种依赖注入详解
Feb 23 Javascript
js关于getImageData跨域问题的解决方法
Oct 14 Javascript
从零开始学习Node.js系列教程五:服务器监听方法示例
Apr 13 Javascript
JS实现上传图片实时预览功能
May 22 Javascript
react-router JS 控制路由跳转实例
Jun 15 Javascript
基于jquery实现多选下拉列表
Aug 02 jQuery
WebWorker 封装 JavaScript 沙箱详情
quickjs 封装 JavaScript 沙箱详情
Nov 02 #Javascript
js 数组 fill() 填充方法
浅谈 JavaScript 沙箱Sandbox
详解 TypeScript 枚举类型
Nov 02 #Javascript
前端JavaScript大管家 package.json
JavaScript 原型与原型链详情
You might like
《心理测量者3》剧场版动画预告
2020/03/02 日漫
Terran剧情介绍
2020/03/14 星际争霸
php+mysql查询优化简单实例
2015/01/13 PHP
py文件转exe时包含paramiko模块出错解决方法
2016/08/12 PHP
PHP实现简易blog的制作
2016/10/24 PHP
TP5框架实现的数据库备份功能示例
2020/04/05 PHP
浅谈Javascript事件模拟
2012/06/27 Javascript
用js实现小球的自由移动代码
2013/04/22 Javascript
Jquery和JS用外部变量获取Ajax返回的参数值的方法实例(超简单)
2013/06/17 Javascript
javascript实例分享---具有立体效果的图片特效
2014/06/08 Javascript
javascript正则表达式中的replace方法详解
2015/04/20 Javascript
整理Javascript基础入门学习笔记
2015/11/29 Javascript
分享javascript计算时间差的示例代码
2020/03/19 Javascript
jquery+css实现简单的图片轮播效果
2017/08/07 jQuery
Vue-cli创建项目从单页面到多页面的方法
2017/09/20 Javascript
parabola.js抛物线与加入购物车效果的示例代码
2017/10/25 Javascript
纯js代码生成可搜索选择下拉列表的实例
2018/01/11 Javascript
解决微信小程序防止无法回到主页的问题
2018/09/28 Javascript
详解微信小程序支付流程与梳理
2019/07/16 Javascript
vue 中的 render 函数作用详解
2020/02/28 Javascript
python学习笔记:字典的使用示例详解
2014/06/13 Python
python中wheel的用法整理
2020/06/15 Python
python matplotlib库的基本使用
2020/09/23 Python
python+flask编写一个简单的登录接口
2020/11/13 Python
CSS3中box-shadow的用法介绍
2015/07/15 HTML / CSS
HTML5 video 视频标签使用介绍
2014/02/03 HTML / CSS
美国在线乐器和设备商店:Musician’s Friend
2018/07/06 全球购物
MATCHESFASHION澳大利亚/亚太地区:英国时尚奢侈品电商
2020/01/14 全球购物
工厂总经理岗位职责
2014/02/07 职场文书
安全宣传标语口号
2014/06/06 职场文书
2014村书记党建工作汇报材料
2014/11/02 职场文书
解除租房协议书
2014/12/03 职场文书
2014年初级职称工作总结
2014/12/08 职场文书
2015秋季开学典礼演讲稿
2015/07/16 职场文书
《有余数的除法》教学反思
2016/02/22 职场文书
创业计划书之物流运送
2019/09/17 职场文书