原生js 对象深拷贝
程序员文章站
2022-07-05 15:39:55
经常需要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.'); }
这个是之前在网上某个大神那边学习 并且 归纳而来, 转载至某处已经不清楚,如有问题可以留言。