浅谈克隆 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);

相关文章

  • JavaScript原型链详解

    JavaScript原型链详解

    这篇文要给大家介绍的是JavaScript原型链,文章主要介绍内容有构造函数、属性Prototype、属性Prototype、属性__proto__、访问原型上的方法等问题,需要的朋友可以参考一下文章的详细内容
    2021-11-11
  • 详解微信小程序 通过控制CSS实现view隐藏与显示

    详解微信小程序 通过控制CSS实现view隐藏与显示

    这篇文章主要介绍了微信小程序 通过控制CSS实现view隐藏与显示的相关资料,需要的朋友可以参考下
    2017-05-05
  • TypeScript中Module使用区别及模块路径解析规则

    TypeScript中Module使用区别及模块路径解析规则

    这篇文章主要为大家介绍了TypeScript中Module使用区别及模块路径解析规则,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-06-06
  • Css-In-Js实现classNames库源码解读

    Css-In-Js实现classNames库源码解读

    这篇文章主要为大家介绍了Css-In-Js实现classNames库源码解读,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-12-12
  • 微信小程序 出现错误:{

    微信小程序 出现错误:{"baseresponse":{"errcode":-80002,"errmsg":""}}解决

    这篇文章主要介绍了微信小程序 出现错误:{"baseresponse":{"errcode":-80002,"errmsg":""}}解决办法的相关资料,需要的朋友可以参考下
    2017-02-02
  • 本地存储localStorage设置过期时间示例详解

    本地存储localStorage设置过期时间示例详解

    这篇文章主要为大家介绍了本地存储localStorage设置过期时间示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-01-01
  • 在JavaScript实例对象中改写原型方法详情

    在JavaScript实例对象中改写原型方法详情

    这篇文章主要介绍了在JavaScript实例对象中改写原型方法的一下相关资料,需要的效果版可以参考一下文章详细内容,希望对你有所帮助
    2021-10-10
  • 微信小程序 UI布局常用技巧整理总结

    微信小程序 UI布局常用技巧整理总结

    这篇文章主要介绍了微信小程序 UI布局常用技巧整理总结的相关资料,现在不论是APP 还是各种软件,UI布局还是非常重要的,用户体验第一位啊,这里就整理下微信小程序的UI布局,需要的朋友可以参考下
    2016-12-12
  • Javascript闭包使用场景原理详细

    Javascript闭包使用场景原理详细

    这篇文章主要介绍了Javascript闭包的使用场景,  由于在Javascript语言中,只有函数内部的子函数才能读取局部变量,闭包就是能够读取其他函数内部变量的函数。所以,在本质上,闭包就是将函数内部和函数外部连接起来的一座桥梁,下面一起进入文化在哪个了解文章内容
    2021-11-11
  • JS前端重新部署通知用户刷新网页

    JS前端重新部署通知用户刷新网页

    这篇文章主要为大家介绍了JS前端重新部署通知用户刷新网页示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-01-01

最新评论