物件的轉殖(clone)

2021-08-19 10:02:11 字數 1410 閱讀 9193

讓物件obj1轉殖物件obj

var obj = 

var obj1 = {};

function clone(origin,target)

}clone(obj, obj1);

使用for..in把obj物件的每乙個屬性值提取出來並賦值給物件obj1,這就完成了轉殖。

關於以上那個轉殖,為了防止使用者不傳target的形參或者是實參,而是想把轉殖後的結果儲存成乙個物件。

話不多說看**:

var obj = 

var obj1 = {};

function clone(origin,target) ;

for (var prop in origin)

return target; //一定要在for..in迴圈的外圍return

}var demo = clone(obj)

clone(obj,obj1);

如果使用者正常傳參想把obj1轉殖成obj的話,

var target = target || {};

return target;這兩句**是沒多大作用的,防止出錯。

但是使用者想把轉殖好的物件拿出去的時候,就用到了這兩串**,最後把物件返回給力demo。實際上這兩串**就是備用的。

這個才是這節課的重點

在轉殖物件的時候,如果把引用值轉殖過去的話,

目標物件或原始物件修改這個引用值的話,目標物件或原始物件裡面的引用值也會被修改

要做到轉殖後無論修改什麼都不會互相影響。

操作思路:

1.  判斷是不是原始值

1.1  要使用到的方法:typeof。

1.2  如果返回值為  object  則為引用值。

1.3  再判斷引用值是物件還是陣列,三種方法 。建議使用tosring。

1.4  如果為物件則新增乙個物件,為陣列則新增乙個陣列。

如果  typeof  返回的不是  object  ,則直接進行淺層轉殖即可。

2.  使用遞迴迴圈。

3. 完善。

// 深層轉殖乙個物件,deepclon(原始物件,目標物件),也可以拿變數來接收乙個物件,origin為必須物件

function deepclone(origin,target);

for (var prop in origin) else;

}deepclone(origin[prop],target[prop]);

}else

}return target;

}

JAVA 物件轉殖clone

有時候我們希望轉殖乙個已存在的物件,並對其進行操作,但是不希望改變原物件,這時使用clone技術就非常方便了。但是使用clone,也有一些需要注意的地方,因為clone有淺層轉殖和深層轉殖。還是習慣先直接上 結合 講解。注 如果你希望某個類具有clone功能,該類必須實現介面cloneable,它是...

PHP轉殖物件clone

有的時候我們需要在乙個專案裡面,使用兩個或多個一樣的物件,如果你使用 new 關鍵字重新建立物件的話,再賦值上相同的屬性,這樣做比較煩瑣而且也容易出錯,所以要根據乙個物件完全轉殖出乙個一模一樣的物件,是非常有必要的,而且轉殖以後,兩個物件互不干擾。class person 這個人可以說話的方法,說出...

轉殖物件 clone 方法

有的時候我們需要在乙個專案裡面,使用兩個或多個一樣的物件,如果你使用 new 關鍵字重新建立物件的話,再賦值上相同的屬性,這樣做比較煩瑣而且也容易出錯,所以要根據乙個物件完全轉殖出乙個一模一樣的物件,是非常有必要的,而且轉殖以後,兩個物件互不干擾。在php4中我們使用 clone 這個關鍵字轉殖物件...