如果我需要检查对象是否可用,javascript中哪一个更好';在';或obj.key的类型!==&引用;“未定义”;
我需要检查对象中是否有子对象可用。 让父对象为如果我需要检查对象是否可用,javascript中哪一个更好';在';或obj.key的类型!==&引用;“未定义”;,javascript,window,javascript-objects,typeof,navigator,Javascript,Window,Javascript Objects,Typeof,Navigator,我需要检查对象中是否有子对象可用。 让父对象为window,子对象为navigator。 有多种方法可以做到这一点 窗口中的“导航器” typeof window.navigator!==“未定义” 哪一个是最理想的方法呢 你的意思是什么 是否要检查对象是否为其他对象的所有者或实例 'navigator' in window different with typeof window.navigator !== "undefined" 若你们想查看,你们最好使用窗口中的导航器吗 typeof
window
,子对象为navigator
。
有多种方法可以做到这一点
窗口中的“导航器”
typeof window.navigator!==“未定义”
'navigator' in window different with typeof window.navigator !== "undefined"
若你们想查看,你们最好使用窗口中的导航器吗
typeof window.navigator !== "undefined" //safety
如果要查看实例,最好使用关键字instance of
注意
你不应该使用
if (variable) //do something, because it's not safety.
如果是对象,则以下四种方法应具有相同的时间复杂度:
if('navigator' in window){...}
if(typeof window.navigator !== "undefined"){...}
if(window.navigator){...}
if(window.hasOwnProperty('navigator')){...}
1.在第一种情况下,如果您将navigator作为变量进行检查” 并且未声明navigator变量,您的代码将导致错误。但是,如果将其作为窗口的参数进行检查,例如:
if(window.navigator)
您不会得到错误,检查结果将为Undefined=>false(因为您在“if”语句中将其转换为布尔值)。请记住,如果变量为null,if语句也将导致false
2.使用第二种语法,您可以准确地检查您在问题中提到的内容。
“我需要检查对象中是否有子对象。”
总之,我建议你的问题采用第二种方法。其实并不重要,如果(window.navigator),你甚至可以使用
,但这都是基于意见的,我更喜欢1,只是因为它比较短。你说,“window
中的“navigator”与window.navigator的类型不同!==”未定义“
这是怎么回事?第一种方法不是if(导航器)
或if(window.navigator)
。它是如果('navigator'在窗口中)
。
if(window.navigator)