js对象/数组深度复制

今天碰到个问题,js对象、数组深度复制;之前有见过类似的,不过没有实现函数复制,今晚想了一下,实现代码如下:

function clone(obj) {
        var a;
        if(obj instanceof Array){
            a=[];
            for(var i=0;i<obj.length;i++){
                a.push(clone(obj[i]))
            }
        }else if(obj instanceof Function){
            return eval('('+obj.toString()+')')
        }else if(obj instanceof Object){
            a={};
            for(var i in obj){
               a[i]=clone(obj[i])
            }
        }else {
            return obj;
        }
        return a;
    }

特意实验了下发现效果还不错:

var obj= {
       'name':['tom','lizi'],
       'age':{
           'xiaoming':{
               'nihao':'en'
           },
           'en':undefined,
           'h':function s() {
               var ggg={
                   'hell':'e'
               }
               console.log(ggg)
           }
       }
   }
   console.log(clone(obj));//!==obj
function xx() {
    var obj= {
        'name':['tom','lizi'],
        'age':{
            'xiaoming':{
                'nihao':'en'
            },
            'en':undefined,
            'h':function s() {
                var ggg={
                    'hell':'e'
                }
                console.log(ggg)
            }
        }
    }
    return obj;
}
console.log(clone(xx)()==obj)//false

如有问题欢迎指出

 

转载于:https://www.cnblogs.com/angularbaby/p/5782426.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值