浅谈克隆 JavaScript

 更新时间:2021年10月29日 10:53:15   投稿:hqx  
这篇文章主要介绍了克隆 JavaScript,克隆又有浅克隆与深克隆,文章围绕JavaScript浅克隆与深克隆的相关资料展开具体内容,需要的朋友可以参考一下

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);

相关文章

  • 5种方法告诉你如何使JavaScript 代码库更干净

    5种方法告诉你如何使JavaScript 代码库更干净

    J avaScript无处不在,从PC端到移动设备端,甚至是后端,都在使用JavaSc ript。在本文中,将尝试一些可用来使代码看起来更简洁的实践方案,希望能帮助到大家
    2021-09-09
  • 前端JS图片懒加载原理方案详解

    前端JS图片懒加载原理方案详解

    这篇文章主要为大家介绍了前端JS图片懒加载原理方案详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-02-02
  • 如何利用javascript做简单的算法

    如何利用javascript做简单的算法

    这篇文章主要介绍了如何利用javascript做简单的算法,主要是以提问的形式犹如练习小例子然后解决问题并附代码说明,需要的朋友可以参考一下
    2021-11-11
  • 微信小程序 石头剪刀布实例代码

    微信小程序 石头剪刀布实例代码

    这篇文章主要介绍了微信小程序 石头剪刀布实例代码的相关资料,需要的朋友可以参考下
    2017-01-01
  • PHP:微信小程序 微信支付服务端集成实例详解及源码下载

    PHP:微信小程序 微信支付服务端集成实例详解及源码下载

    这篇文章主要介绍了微信小程序 微信支付服务端集成实例详解及源码下载的相关资料,需要的朋友可以参考下
    2017-01-01
  • 前端AI机器学习在浏览器中训练模型

    前端AI机器学习在浏览器中训练模型

    这篇文章主要为大家介绍了前端AI机器学习在浏览器中训练模型的示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-07-07
  • Google 地图控件集详解及实例代码

    Google 地图控件集详解及实例代码

    本文主要介绍Google 地图控件集,这里帮大家整理了关于Google地图控件集的基础知识,详细介绍了控件的功能,并附示例代码,有需要的小伙伴可以参考下
    2016-08-08
  • TypeScript栈的压入与弹出序列校验

    TypeScript栈的压入与弹出序列校验

    这篇文章主要为大家介绍了TypeScript栈的压入与弹出序列校验示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-09-09
  • tree shaking对打包体积优化及作用

    tree shaking对打包体积优化及作用

    这篇文章主要为大家介绍了tree shaking对打包体积优化及作用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-07-07
  • unified如何处理markdown解析器详解

    unified如何处理markdown解析器详解

    这篇文章主要为大家介绍了unified如何处理markdown解析器详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-01-01

最新评论