經常需要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.');
}
這個是之前在網上某個大神那邊學習 並且 歸納而來, 轉載至某處已經不清楚,如有問題可以留言。