美文网首页
JS对象深拷贝

JS对象深拷贝

作者: Gino_Li | 来源:发表于2019-03-12 20:29 被阅读0次

    方法一:

    JSON.parse(JSON.stringify(obj))
    缺点:不能复制对象里的function,symbol,undefined

                var obj = {
                    _name: "小明",
                    _age:18,
                    skill: function() {
                        console.log('1');
                    },
                    play: function() {
                        console.log('2')
                    },
                    a: undefined
                }
    
    var copyObj = JSON.parse(JSON.stringify(obj));
    console.log(copyObj);//{_name: "小明", _age: 18}
    copyObj.skill();//copyObj.skill is not a function
                            
    

    方法二:递归

                var obj = {
                    _name: "小明",
                    _age:18,
                    skill: function() {
                        console.log('1');
                    },
                    play: function() {
                        console.log('2')
                    },
                    a: undefined
                }
    
                function deepCopy(obj){
                    let copyObj = Array.isArray(obj)?[]:{};
                    for(var key in obj){
                        copyObj[key] = typeof(obj[key])==="object"?deepCopy(obj[key]):obj[key];
                    }
                    console.log(copyObj==obj);//false
                    return copyObj;
                }
                
                console.log(deepCopy(obj));//{_name: "小明", skill: ƒ, play: ƒ, a: undefined}
    

    相关文章

      网友评论

          本文标题:JS对象深拷贝

          本文链接:https://www.haomeiwen.com/subject/feropqtx.html