原生js 对象深拷贝
经常需要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.');
}
这个是之前在网上某个大神那边学习 并且 归纳而来, 转载至某处已经不清楚,如有问题可以留言。
前进道路长,学习不可怠