初級轉殖:
/* 初級轉殖[只拷貝原始值] */
// 定義乙個物件
var obj =
// 定義乙個空物件
var obj1 =
// origin原始 target目標
// 將origin的屬性拷貝給target
// prop = property
function clone
(origin, target)
;// 1.把origin所有的屬性都拿出來,每次拿出來都是prop
// 2.讓target的prop等於origin的prop
for(
var prop in origin)
// 返回
return target;
}clone
(obj, obj1)
;
模擬環境:
var obj =}}
var obj1 =}}
//遍歷物件 for(var prop in obj)
//1.判斷是不是原始值 typeof() object
//2.判斷是陣列還是物件 instanceof tostring constructor
//3.建立相應的陣列或物件
//遞迴
深層轉殖核心**:
function deepclone
(origin, target)
,// 得出的結果要比對,跟陣列或物件
tostr = object.prototype.tostring,
arrstr =
"[object array]"
;//遍歷物件 for(var prop in obj)
for(
var prop in origin)
else;}
// 迴圈判斷
deepclone
(origin[prop]
, target[prop]);
}else}}
}
深層拷貝測試:
var obj =}}
var obj1 =
//遍歷物件 for(var prop in obj)
//1.判斷是不是原始值 typeof() object
//2.判斷是陣列還是物件 instanceof tostring constructor
//3.建立相應的陣列或物件
//遞迴
function deepclone
(origin, target)
,// 得出的結果要比對,跟陣列或物件
tostr = object.prototype.tostring,
arrstr =
"[object array]"
;//遍歷物件 for(var prop in obj)
for(
var prop in origin)
else;}
// 迴圈判斷
deepclone
(origin[prop]
, target[prop]);
}else}}
}
淺轉殖與深轉殖
clone 方法是object中的乙個方法 淺轉殖 shallow copy employee cindy tobby.clone 深轉殖 deep copy 必須實現cloneable介面 class employee implements cloneable 如果物件中有引用型別,就必須使用深度...
深轉殖與淺轉殖
淺轉殖 被轉殖物件的所有變數都含有與原來物件相同的值,而所有的對其他物件的引用仍然指向原來的物件。換言之,淺轉殖僅僅轉殖所考慮的物件,而不轉殖它所引用的物件。深轉殖 被轉殖物件的所有變數都含有與原來物件相同的值,除去那些引用其他物件的變數。那些引用其他物件的變數將指向被轉殖的新物件,而不再是原有的那...
淺轉殖與深轉殖
一般實現陣列轉殖的方法都是淺轉殖,直接將儲存在棧中的值賦值給對應變數,如果是基本資料型別,則直接賦值對應的值,如果是引用型別,則賦值的是位址 slice let arr2 arr1.slice 0 concat let arr2 arr1.concat 擴充套件運算子 ary let arr2 ar...