在未定义的属性失败之前处理这些属性'

时间:2014-03-11 13:30:32

标签: javascript event-handling

我想在我们的对象失败之前处理未定义的属性和/或标识符/如果可能的话返回undefined。

是否有一种巧妙的方法来捕获对未定义属性的访问并在不使用try / catch的情况下处理它?<​​/ p>

var myObj = {
    myVar : 10,
    myFunc : function(){console.log('foo')
}

myObj.myVar;
myObj.myFunc();

var x = "myFunc";
myObj[x];
x = "myOtherFunc";
// Handle this in an eventhandler or similar before it fails!?!?
myObj[x];

我无法改变我的位置的调用代码。我只能更改myObj中的代码,因为它是其他人使用的模块。

2 个答案:

答案 0 :(得分:0)

try {
  myObj.myOtherFunc();
} catch() {

}

myObj.myOtherFunc() || ""; //default value;

myObj.myOtherFunc() || myObj.myDefinedFunc(); //default value;

if (var t = myObj.myOtherFunc())
  // something
else
  // something else

答案 1 :(得分:0)

试试这个:

if(myObj.hasOwnProperty(x)) {
    myObj[x];
}