js实现clone方法对各种数据类型进行复制

对各种数据类型进行复制,最初的思想是利用typeof判别数据类型后利用switch语句分别赋值,但是有个问题:null、Array和Object返回的都是‘object’,所以又要细分为三种情况编写代码。其中,要判断一个对象为数组使用的是:toString.apply(obj)方法。完整代码如下:

function clone(obj){
            var copy;
            switch(typeof obj){
                case 'undefined':break;
                case 'number':
                case 'string':
                case 'boolean':copy = obj;break;
                case 'object':
                    if(obj == null) copy = null;
                    else if(toString.apply(obj) === '[object Array]')
                    {
                        copy = [];
                        for(var i in obj) copy.push(clone(obj[i]));
                    }
                    else 
                    {
                        copy = {};
                        for(var j in obj)
                            copy[j]= clone(obj[j]);
                    }
            }
            return copy;
        }
        console.log(clone(true));
        console.log(clone(12));
        console.log(clone('abc'));
        console.log(clone(null));
        console.log(clone([1,2,3]));
        console.log(clone({name:'zh',age:'18'}));
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值