zoukankan      html  css  js  c++  java
  • js对象深拷贝

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>Document</title>
    </head>
    <body>
        
    </body>
    
    <script>
        function deepCopy(obj){
            //确定入参是数组还是对象
            var objArray = Array.isArray(obj) ? []:{};
            //obj存在,且类型为对象
            if(obj && typeof obj === 'object'){
                //遍历对象属性
                for(key in obj){
                    //判断对象属性是否属于自身
                    if(obj.hasOwnProperty(key)){
                        //判断obj子属性是否为对象,如果是,递归操作,否 将对象保存
                        if(obj[key] && typeof obj[key] === 'object'){
                            objArray[key] = deepCopy(obj[key])
                        }else{
                            objArray[key] = obj[key]
                        }
                    }
                }
            }
            return objArray;
        }
    
        var obj1 = {
            nan:1,
            bei:null,
            dong:undefined,
            xi:{
                xinan:2,
                xibei:function(){
                    let b = 2
                }
            },
            fn:function(){
                let a = 1;
            },
            a:[1,2]
        }
        var obj2 = deepCopy(obj1)
        console.log(obj1)
        obj2.xi.xinan = 5;
        console.log(obj2)
    </script>
    </html>
  • 相关阅读:
    困难的图论
    [Poi2011]Meteors
    四维偏序
    bzoj2738矩阵乘法
    创建线程的三种方式
    java邮件发送
    Nginx配置文件分析
    如何理解java反射?
    正则表达式
    jenkins新手入门教程
  • 原文地址:https://www.cnblogs.com/bigDipper/p/9209100.html
Copyright © 2011-2022 走看看