实现javascript深复制

来源:互联网 发布:东方财富软件使用 编辑:程序博客网 时间:2024/05/18 01:40

Javascript深复制需要处理引用值类型的数据,使复制的内容不再引用同一块内存地址。引用类型包括:Object,Array。通过typeof可以检测是否是类Object,包括了RegExp,Date等,需要将这些直接赋值即可,下面是我实现的深复制方法:

/** * 实现深复制 * @param copy 需要复制的数组 * @returns {*} */function deepclone(copy){    var src;    //仅当copy为普通object或者数组时    if(typeof copy === 'object' &&        (Object.prototype.toString.call(copy) === '[object Object]' ||        Object.prototype.toString.call(copy) === '[object Array]')){        src = (copy.constructor === Array)?[]:{};        for(var key in copy){            if(copy.hasOwnProperty(key)){                src[key] = deepclone(copy[key]);            }        }    }else if(copy !== undefined){        src = copy;    }    return src;}

大家可以看下jQuery或lodash等实现的深复制的过程。