在未定义的属性'fail'之前处理它们



我想在我的对象上处理未定义的属性和/或标识符,然后它们失败/如果可能的话,返回未定义。

是否有一种简洁的方法来捕获对未定义属性的访问并处理它而不使用try/catch?

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内部的代码,因为它是别人使用的模块。

try {
  myObj.myOtherFunc();
} catch() {
}
myObj.myOtherFunc() || ""; //default value;
myObj.myOtherFunc() || myObj.myDefinedFunc(); //default value;
if (var t = myObj.myOtherFunc())
  // something
else
  // something else

try this:

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

最新更新