js对数据深度克隆的方法

js对数据深度克隆的方法

要知道如果是引用数据的话普通的将值传给变量只是传了一个新地址,指向的还是原本栈的数据,如果修改任意一个都会改变栈中的原本数据,所以需要用到深度克隆。

1. 首先创建一个可以传入数据的函数.
2. 函数内先对传入数据的类型运用typeof()进行初步判断,判断出原始数据和引用类型数据.
3. 从引用数据中运用Array.array()的方法判断是否为数组,如果是数组便遍历这个数组,让遍历的每个下标对映的值传入一个新的空的数组中。如果是对象的话用 for in遍历对象将对象中每个的属性对应的值传入其中(result[i] = x[i])最后返回这个结果。
4. 如果是原始数据就直接拿一个新变量赋予值既可以返回。

function kelong(x) {
            if (typeof (x) == 'object') {
            	//如果是引用数据类型
                if (Array.isArray(x) == true) {
                    for (var i = 0, result = []; i < x.length; i++) {
                        result.push(arr[i])
                    }
                    return result;
                } else {
                    var result = {};
                    for (var i in x) {
                        result[i] = x[i];
                    }
                    return result;
                }
                //如果原始数据类型
            } else {
                var result = x;
                return result;
            }
        }
        //对象测试
        var obj = {
            name: 123,
            age: 123456,
        }
        var obj2 = kelong(obj);
        obj.change = 321;
        console.log(obj, obj2);
		//数组测试
        var arr = [1, 2, 3, {
            width: "123"
        }];
        var arr2 = kelong(arr);
        arr.push(12345);
        console.log(arr, arr2);
		//原始数据number测试
        var num = 12345;
        num2 = kelong(num);
        num += 2;
        console.log(num,num2)

在这里插入图片描述

~~~~~~~~~ end ~~~~~~~~~~

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值