2011-01-28 45 views
0

我需要比較對象以瞭解哪些屬性發生了更改以及添加了哪些屬性。 是否有任何代碼片段會遍歷整個對象及其屬性,並在存在任何更改時發出警報,並繼續其處理直至結束。需要比較相同類型的對象以瞭解javascript中的差異

考慮我需要比較其父面板顯示和隱藏事件前後extjs中的網格面板(對象)。

在此先感謝

+0

是的,這個「聞起來」像你在這裏錯誤的軌道 – 2011-01-28 17:12:15

回答

0

如果您只是想檢查,如果同一類的兩個對象不同:

function differ(a, b) { 
    for (var i in a) { 
    if (a.hasOwnProperty(i) && b.hasOwnProperty(i) && a[i] === b[i]) { 
     return true; 
    } 
    } 
    return false; 
} 

a = {foo: 1, bar: 2}; 
b = {bar: 2}; 

alert(differ(a, b) ? "Objects differ" : "Objects are the same"); 

如果不是你以後,更詳細地解釋你的問題。

0

我在將對象添加到數組時遇到了類似的問題。我想確定,同一個對象不會被添加兩次。

我發現了一個輔助函數爲ExtJS的其中實現了基於由所述對象包含的值進行比較的對象的函數:

https://github.com/nmishra/helpers.js

然後,它可以使用這樣的:

var obj1 = {foo: 'bar'}, 
    obj2 = {foo: 'bar'}, 
    equality = Ext.ux.util.Object.compareObject(obj1, obj2); 
console.log(equality);