讓物件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 這個關鍵字轉殖物件...