var obj = ,
love:[1,2,3]
}}
var obj1 = {};
function deepclone(origin,target),
tostr = object.prototype.tostring,
arrstr = "[object array]";
for(var prop in origin)else;
// }
target[prop] = tostr.call(origin[prop]) == arrstr?:{};
deepclone(origin[prop],target[prop]);
}else}}
return target;
}
方法:
1、判斷是否為原始值(原始值直接淺拷貝,引用值深拷貝)—>用for in 進行遍歷(陣列物件都可以) -->用typeof() == 「object」
2、判斷引用值是陣列還是物件–>1、constructor(構造器,物件的屬性) 2、instanceof( a instanceof b 判斷a 的原型鏈上有沒有b的原型) 3、tostring(arr的tostring方法是繼承array的) —>在中,會出現子域陣列放在父域陣列裡面,用第一第二種方法就會返回false。建議用第三種。
3、建立或{} -->遞迴
js深度轉殖物件
用js實現物件轉殖最關鍵的兩點就是 var objclone new this.constructor 和objclone key this key clone 乙個實現相同物件建立,乙個實現深度轉殖。object.prototype.clone function else for var key ...
List的深度轉殖
在完成arraylist的複製的時候,發現通過list.addall 方法複製的list中的物件,和原來list 中的物件是同乙個位址,這意味著你修改複製的list中的乙個物件,那麼原來list 中的物件也會跟著變化!這稱為淺轉殖,在很多地方淺轉殖,不能實現我們需求。深度轉殖,是指在複製list的時...
深度轉殖物件
有時,我們需要對乙個物件進行複製,如下列要求 1.使用遞迴來實現乙個深度轉殖,可以複製乙個目標物件,返回乙個完整拷貝 2.被複製的物件型別會被限制為數字 字串 布林 日期 陣列 object物件。function isobject obj function cloneobject obj 判斷物件型...