zoukankan      html  css  js  c++  java
  • javascript关于对象或者数组深克隆的写法

      let obj = {
            name:"qin",
            age:123,
            arr:[1,2,34,5,{
                name:"jin",
                sex:"女"
            }],
            obj1:{
                ay:[32,4]
            }
        }
        let arr1 = [2,4,2,35,2]
        function deepClone(origin,target){
            //调用对象原型链上面的tostring方法判断数据主体是对象还是数组
            let toString = Object.prototype.toString,
                obj_array = "[object Array]";
            target = target || (toString.call(origin) == obj_array ? [] : {});//判断当前源主体是对象还是数组并赋值
            for(let prop in origin){//循环主体里面的每一个子元素
                if(origin.hasOwnProperty(prop)){//判断prop属性是不是origin自带的
                    if(typeof(origin[prop]) == "object"){//如果是object类型
                        target[prop] = (toString.call(origin[prop]) == obj_array ? [] : {});
                        deepClone(origin[prop],target[prop]);//如果子元素是引用数据的话就递归
                    }
                    else{
                        target[prop] = origin[prop];//如果子元素是基本数据类型的话就直接赋值
                    }
                }
            }
            
            return target;
        }
        let result = deepClone(obj);
        let result1 = deepClone(arr1);
        console.log(result,result1);
  • 相关阅读:
    生产宕机dunp配置
    虚拟机下载地址
    处理soapUI特殊返回报文 【原】
    SpringMVC 手动控制事务提交 【转】
    码云URL
    Java IO流操作汇总: inputStream 和 outputStream【转】
    springMVC下载中文文件名乱码【转】
    js
    js
    js
  • 原文地址:https://www.cnblogs.com/qinyulin/p/8523534.html
Copyright © 2011-2022 走看看