只能拷貝原始值,如果存在引用值,拷貝的是引用位址。origin 更改值後 target還是會被改變
function clone(origin, target) ;
for (var prop in origin)
return target;
}var obj =
var obj1 = {};
clone(obj, obj1);
無論原始值還是引用值,都進行copy 互不影響
// 1. 遍歷物件 for in
// 2. 判斷是不是原始值 typeof
// 3. 判斷是陣列還是物件 tostring
// 3. 建立相應的陣列或物件
// 4. 遞迴
function deepclone(origin, target) ;
var tostr = object.prototype.tostring;
for (var key in origin) ;
deepclone(origin[key], target[key]);
} else if (res === '[object array]') else }}
return target;
}var obj =
}}var obj1 = {};
deepclone(obj, obj1);
JavaScript必學之資料深淺拷貝
js 物件賦值之淺拷貝深拷貝在實際中應用 我們有時候有這樣的需求,需要將乙個值賦值給另外乙個變數。例如 var a 10 var b a 在這裡我們首先需要知道基本型別和引用型別的區別。js 有 6 種基本資料型別 undefined null boolean number string symbo...
深淺拷貝以及深淺拷貝的方法
先考慮一種情況,對乙個已知物件進行拷貝,編譯系統會自動呼叫一種建構函式 拷貝建構函式,如果使用者未定義拷貝建構函式,則會呼叫預設拷貝建構函式。執行結果 呼叫一次建構函式,呼叫兩次析構函式,兩個物件的指標成員所指記憶體相同,name指標被分配一次記憶體,但是程式結束時該記憶體卻被釋放了兩次,會造成記憶...
拷貝和深淺拷貝
當list2為list的拷貝物件時,list內的可變資料型別變化,list2變化 list內的不可變資料型別變化,list2變化。總之 list變化list2一定變化 list 1,2,3,4,list2 list print list print list2 1,2,3,4,5 1,2,3,4,5...