美文网首页
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实现深拷贝、instanceof、判断是否为数组

    JS深拷贝 JS中拷贝对象可以按照拷贝的程度可以分为浅拷贝和深拷贝,有些时候我们需要拷贝之后的对象和拷贝之前的对象...

  • JS工具-类型判断和深拷贝

    1. js深拷贝 js深拷贝简单对象的拷贝可以用JSON.stringify() 和 JSON.parse() 实...

  • JS中对象的复制

    JS中的对象复制分为两种情况:深拷贝和浅拷贝。深拷贝和浅拷贝的区别在于对数组和对象的拷贝,对它们拷贝时浅拷贝只是拷...

  • js对象深拷贝

    1.使用slice或者concat进行数组深拷贝 对于值都是普通数据类型的数组,可以使用数组的slice或者con...

  • js深拷贝对象

  • js对象深拷贝

    javascript的数据类型有两种;基本数据类型和引用数据类型。 当我们拷贝一个引用数据类型变量的时候,然后操作...

  • JS对象深拷贝

    方法一 注意:该方法只适用于简单类型的对象,不适用于对象里面嵌套对象;即使拷贝成功,给新对象里的对象的变量重新赋值...

  • JS对象深拷贝

    方法一: JSON.parse(JSON.stringify(obj))缺点:不能复制对象里的function,s...

  • 2019-11-19 JS对象深拷贝

    JS对象深拷贝: 1.JSON方法深拷贝 JSON.parse(JSON.stringify(obj)); 2.解...

  • 【转】一行代码完成js对象数组的深拷贝

    一行代码完成js对象数组的深拷贝

网友评论

      本文标题:JS对象深拷贝

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