javascript - 检查对象及其方法是否都已定义的单行代码

标签 javascript undefined

<分区>

Possible Duplicate:
In javascript, test for property deeply nested in object graph?

我只想运行此代码块,并且仅当 obj.method1.mthod2 为真时才运行。 但是当 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链接,但它没有帮助。

最佳答案

我一般是这样写的:

if (typeof(obj) != "undefined" && obj.method1 && obj.method1.method2){
    // The magic
}

虽然我主要使用函数来执行此操作,因为我非常确定某些基本类型的实例会计算为 false,即使它们不是未定义的。

编辑:正如 lanzz 在评论中指出的那样,obj 需要一个 typeof。

关于javascript - 检查对象及其方法是否都已定义的单行代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13063183/

相关文章:

javascript - 无法读取未定义的外部 page.evaluate() 属性 'map'

javascript - 为什么在React中未定义此数组?

javascript - 从本地上传图片到 TinyMCE?

javascript - IntersectionObserver.observe 不是对象,如何使用IntersectionObserver

javascript - 2图像之间的Jquery切换不起作用

javascript - 通过 ajax 调用动态添加的内容不能用 jquery 定位

Flutter 在更新后无法识别它自己的名为参数的小部件

javascript - 为什么未定义被添加到我的过滤列表中?

javascript - ng-repeat 元素删除属性

javascript - 无法访问 Javascript 数组中的变量。 Console.log 说未定义