浅谈克隆 JavaScript

发布时间:2022-04-16 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了浅谈克隆 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所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签:克隆克隆