2015-11-11 128 views
2

我正在尋找一種方法來在訪問對象本身中缺少的屬性時捕獲異常。JavaScript屬性錯誤處理

我在尋找類似:

var objOne = 
{ 
    objTwo: {}, 
    objThree: {}, 
    fallback: function(missingProperty) 
    { 
     alert('obj did not contain property ' + missingProperty); 
    } 
} 

呼籲像objOne.objFour應掛objOne.fallback('objFour')。 有沒有一種好的方法來處理這個問題?

+0

您需要編寫自定義的getter方法,而不是直接引用屬性。 http://stackoverflow.com/a/10727950/14104 – epascarello

回答

1

訪問未定義的屬性不會觸發任何異常,你可以有相同的行爲與||

function callBack (missingProperty) { 
    alert('obj did not contain property ' + missingProperty) 
} 
objOne[attr] || callBack(attr); 

這將觸發callBack功能時objOne不含attr

0

的想法,我已經是修改customObject(例如objThree)的原型的構造函數,並檢查設定值等...

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/constructor

http://www.w3schools.com/js/js_object_definition.asp

,或者你定義通過創建對象觸發的自定義事件:

https://developer.mozilla.org/en-US/docs/Web/Guide/Events/Creating_and_triggering_events

我希望我能正確理解你,這就是你正在尋找的東西。另一種可能性是:

var objThree = function(a, b){ 
var parent = this; 
this.valA = a; 
this.valB = b; 
this.checkForValues = function(){ 
    if (parent.valA == null || parent.valB == null) return false; 
    return true; 
} 

問候

+0

爲什麼downvoted這個? – messerbill

+1

沒有線索 - 感謝好主意,把它提升到0;) – skyscraper