1. 程式人生 > >Javascript中物件深拷貝的應用

Javascript中物件深拷貝的應用

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;  
}