js的深度轉殖

2021-09-01 16:03:33 字數 701 閱讀 5253

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 判斷物件型...