2015-11-11 101 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