淺轉殖與深轉殖(阿里面試題)

2021-10-14 13:12:53 字數 1641 閱讀 1582

初級轉殖:

/* 初級轉殖[只拷貝原始值] */

// 定義乙個物件

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...