可能重复:
In javascript, test for property deeply nested in object graph?
我只想运行此代码块,并且只有当obj.method1.mthod2为true时才运行。 但是当obj本身没有被定义时可能就是这种情况。或者method1未定义。
if (obj.method1.method2) {
}
我应该这样做吗?
if (typeof(obj)!="undefined" && typeof(obj.method1)!="undefined" && typeof(obj.method1.method2)!="undefined" && obj.method1.method2) {
}
看起来很难看!任何方式做得更短? 我看过这个Detecting an undefined object property链接,但没有帮助。
答案 0 :(得分:4)
我通常这样写:
if (typeof(obj) != "undefined" && obj.method1 && obj.method1.method2){
// The magic
}
我主要使用函数执行此操作,因为我非常确定某些基本类型的实例会评估为false,即使它们未定义。
编辑:由于 lanzz 在评论中指出,obj需要一个typeof。
答案 1 :(得分:0)
尝试try
try {
if(obj.method1.method2) {
alert("ok!");
}
}catch(e) {
alert("obj or some property not defined");
}
答案 2 :(得分:0)
更简洁:
if (obj && obj.method1 && obj.method1.method2) {
...
}