首页 > 试题广场 >

assign的深拷贝

浅克隆可以使用assign,深克隆就可以考虑用递归+属性类型判断


assign 细节请参考:https://blog.csdn.net/qq_44647809/article/details/114701144

编辑于 2021-10-05 20:47:57 回复(0)
Object.assign({},obj1)的意思是先建立一个空对象{},接着把obj1中所有的属性复制过去,所以obj2会长得跟obj1一样,这时候再修改obj2.b也不会影响obj1。

var obj1 = {name:'lily'};
    var obj2 = Object.assign({},obj1);
    obj2.name = 'bob';
    console.log(obj1.name); //lily
    console.log(obj2.name); //bob

发表于 2019-10-09 18:24:49 回复(0)
<script type="text/javascript">
    var deepCopy = function(obj) {
        if( typeof obj !=='object') return;
        var newObj = obj instanceof Array ? [] : {};
        for(var key in obj){
            if(obj.hasOwnProperty(key)){
                newObj[key] = typeof obj[key] === 'object' ? deepCopy(obj[key]) : obj[key];
            }
        }
        return newObj;
    }
</script>
发表于 2022-03-20 17:11:27 回复(0)