码迷,mamicode.com
首页 > Web开发 > 详细

js对象深拷贝

时间:2018-06-21 15:30:29      阅读:196      评论:0      收藏:0      [点我收藏+]

标签:[]   lang   ble   自身   ini   har   charset   类型   OLE   

<!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>

 

js对象深拷贝

标签:[]   lang   ble   自身   ini   har   charset   类型   OLE   

原文地址:https://www.cnblogs.com/bigDipper/p/9209100.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!