我想在我们的对象失败之前处理未定义的属性和/或标识符/如果可能的话返回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中的代码,因为它是其他人使用的模块。
答案 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];
}