当前位置: 移动技术网 > IT编程>开发语言>JavaScript > 原生js 对象深拷贝

原生js 对象深拷贝

2019年01月17日  | 移动技术网IT编程  | 我要评论

经常需要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.');

}

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

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网