分析了一下JQuery中的extend方法实现原理

2020-05-24 21:26:43易采站长站整理

                } 
                // 如果对象中包含了数组或者其他对象,则使用递归进行拷贝 
                if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) { 
                    // 处理数组 
                    if ( copyIsArray ) { 
                        copyIsArray = false; 
                        // 如果目标对象不存在该数组,则创建一个空数组; 
                        clone = src && jQuery.isArray(src) ? src : []; 
                    } else { 
                        clone = src && jQuery.isPlainObject(src) ? src : {}; 
                    } 
                    // 从不改变原始对象,只做拷贝 
                    target[ name ] = jQuery.extend( deep, clone, copy ); 
                // 不拷贝undefined值 
                } else if ( copy !== undefined ) { 
                    target[ name ] = copy; 
                } 
            } 
        } 
    } 
    // 返回已经被修改的对象 
    return target; 
};

 从上面的分析可以看出extend函数支持深度拷贝,那么在JS中什么是深度拷贝呢?