欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

原生js 对象深拷贝

程序员文章站 2022-03-20 20:03:18
经常需要copy一个对象,又怕拷贝有问题,那下面这段就很方便啦,不用担心copy只是一个引用了。 / @ values 需要copy的变量 / function deepClone(values) { var copy; if(values == null || typeof values != " ......

经常需要copy一个对象,又怕拷贝有问题,那下面这段就很方便啦,不用担心copy只是一个引用了。

/**
    @ values  需要copy的变量
*/

function deepclone(values) {
    var copy;

    if(values == null || typeof values != "object") return values;  // 为null或者不是对象直接返回

    if(values instanceof date) {   // date对象
        copy = new date();
        copy.settime(values.gettime());
        return copy;
    }

    if(values instanceof array) { 
        copy = [];
        for(var i = 0, len = values.length; i < len; i++ ) {
            copy[i] = deepclone(values[i]);  // 递归调用
        }
        return copy;
    }

    if(values instanceof object) {
        copy = {};
        for (var attr in values) {
            if(values.hasownproperty(attr)) copy[attr] = deepclone(values[attr]); 
        }
        return copy;
    }

    throw new error('unable to copy values! its type isn`t supported.');

}

这个是之前在网上某个大神那边学习 并且 归纳而来, 转载至某处已经不清楚,如有问题可以留言。