如果我需要检查对象是否可用,哪一个在javascript中更好。 '在'或者类型为obj.key!==" undefined"

时间:2017-09-26 08:23:14

标签: javascript window javascript-objects typeof navigator

我需要检查一个子对象是否在对象中可用。 设父对象为SELECT name , firstname FROM emp WHERE name+' '+firstname LIKE '%test%' ,子对象为window。 可能有多种方法可以做到这一点。

  1. navigator
  2. 'navigator' in window
  3. 哪一个是理想的做法。

3 个答案:

答案 0 :(得分:1)

如果它是一个对象,以下四种方法应具有相同的时间复杂度:

if('navigator' in window){...}

if(typeof window.navigator !== "undefined"){...}

if(window.navigator){...}

if(window.hasOwnProperty('navigator')){...}

答案 1 :(得分:1)

1.如果您将导航器检查为变量“

,则第一种方式
if(navigator)

并且未声明导航器变量,您的代码将导致错误。但是,如果您将其检查为窗口的参数,例如:

if(window.navigator)

您不会收到错误,系统会检查您的支票是否为undefinded => false(因为你在“if”语句中将它转换为boolean)。重要的是要记住,如果你的变量为null,if语句也将导致false。

2.使用第二种语法,您可以准确检查您在问题中提到的内容。 “我需要检查对象中是否有子对象。”

总之,我会为你的问题推荐第二种方式。

答案 2 :(得分:0)

你的意思是什么?

你想检查对象所有者或另一个对象的实例吗?

 typeof window.navigator !== "undefined"   //safety

如果你想检查,窗口中的导航器你最好使用

 if (variable) //do something, because it's not safety.

如果您想检查实例,最好使用关键字

的实例

注意

你不应该使用

{{1}}