Javascript中物件深拷貝的應用
阿新 • • 發佈:2018-11-29
javascript中的物件的深拷貝
關於Javascript的物件的深淺拷貝網上有很多的說明文件。
詳見:js深拷貝和淺拷貝
下面說明下我遇到的業務場景,由於框架的限制,在每次開啟模態頁面的時候,框架會自動將我賦予模態頁面的物件的屬性改變,而框架對於屬性的名稱是嚴格要求的。
var checkBoxObj = {
'text':'aaa',
'value': '1'
}
(物件一)
改變後:
var checkBoxObj = {
'name':'aaa',
'value':'1'
}
(物件二)
這樣第一次模態頁面的開啟是正常的,但是第二次開啟後就會造成,物件屬性就會不識別。框架仍然希望我傳進來的是(物件一)這種形式,
但是第一次模態頁面的開啟已經造成了物件屬性名稱的改變,所以造成原來物件的丟失。所以採用物件的深拷貝解決這個問題。每次傳給模態頁面的是一個拷貝的物件,這樣就保留了原來的物件。
以下是拷貝程式碼部分:
/**
* 物件的拷貝。
* 入參:原物件,作為副本不變。
*/
cloneFun:function (obj){
function Clone(){}
Clone.prototype = obj;
var o = new Clone();
for(var a in o){
if(typeof o[a] == "object") {
o[a] = cloneFun(o[a]);
}
}
return o;
}