深層轉殖(複雜)

2021-08-29 20:11:59 字數 1639 閱讀 3840

轉殖:

淺層轉殖

深層轉殖

a是乙個物件,b是乙個空物件,我想把a的屬性全部轉殖到b身上,並且讓a的屬性和b沒有任何聯絡,因為有的屬性是引用值,你拷貝是拷的引用,他倆操作還是同乙個人。

var obj = }}

var obj1 =

function deepclone(origin,target)

我想把obj拷給obj1,看你是原始值還是引用值。

如果是原始值直接拿過來;如果是引用值,再看是陣列還是物件,建立新陣列,新物件,再看括號裡面的是引用值還是原始值,依次迴圈。

總結:

判斷是不是原始值;

判斷是陣列還是物件;

建立相應的陣列或物件;

依次迴圈。

var obj = }}

var obj1 = }}

function deepclone(origin,target)

遍歷物件

for(var pro in obj)(

陣列也能遍歷)

1.     

判斷是不是原始值;

typeof()

是obj

就是引用值

,如果不是

,很有可能就是原始值

,null除外

2.     

判斷是陣列還是物件;三種方法

(instanceof,constructor,tostring) ,

建議用tostring()

3. 

建立相應的陣列或物件; 4.

依次迴圈.遞迴

完善一下:是不是還有null的問題!

轉殖 淺表副本與深層副本

轉殖 當將乙個引用變數賦值紿另外乙個引用變數時,只是簡單地建立了指向同乙個物件的第二個引用。如果要製造乙個物件的副本,你就需要某種機制來建立同乙個類的新例項,並且基於原來物件的狀態初始化該例項。object.memberwiseclone方法就是做這件事情的 然而,它不是乙個公有辦法。更進一步說,如...

轉殖,深轉殖和淺轉殖

轉殖,深轉殖和淺轉殖。1.實現轉殖,繼承cloneable介面,實現clone beanutils.clonebean origin 2.深轉殖和淺轉殖的區別,淺轉殖指的是轉殖的時候僅僅轉殖物件本身 物件的基本變數 而不拷貝物件的引用變數。深轉殖指的是轉殖的時候不僅轉殖物件本身,而且拷貝物件包含的引...

js 轉殖 淺轉殖 深轉殖)

淺轉殖var obj var obj1 function clone origin,target return target clone obj,obj1 obj1.name ge console.log obj1.name ge console.log obj.name chen obj1.car...