首页 > 关于JS的函数深拷贝问题?

关于JS的函数深拷贝问题?

<script type="text/javascript">
            var obj={
                a:{
                    b:10
                }
            }
            function copy(obj){
                if(typeof obj !=="object"){
                    return obj;
                }
                var newobj={};
                for(var attr in obj){
                    newobj[attr]=copy(obj[attr]);
                }
                return newobj;
            }
            var obj2=copy(obj);
            obj2.a.b=40;
            alert(obj.a.b);
        </script>

关于这个函数在递归调用之后,怎么具体运行的。。


只要这个属性是引用类型,那么就继续调用copy函数,对这个引用类型属性进行处理,就这样一直下去,知道这个属性不是引用类型的,然后逐个出函数栈,这样你得到的就是一个深拷贝后的对象。


啊咧,发现答非所问了...囧

你这里只是针对 Object 进行深拷贝(并没有考虑 function 和 Array),并且将原型链上的属性也拷贝到新实例上...(看起来有点儿奇怪...)

JavaScript 深拷贝我感觉是个大坑...

【热门文章】
【热门文章】