2017-09-26 4 views
1

Je dois vérifier si un objet enfant est disponible dans un objet ou non. Laissez l'objet parent est window et l'objet enfant serait navigator. Il pourrait y avoir plusieurs façons de le faire.Lequel est le meilleur en javascript si j'ai besoin de vérifier si l'objet est disponible ou non. 'in' ou typeof obj.key! == "undefined"

  1. 'navigator' in window
  2. typeof window.navigator !== "undefined"

Lequel serait le moyen idéal de le faire.

+5

Peu importe vraiment, vous pouvez même faire 'if (window.navigator)', mais tout est basé sur l'opinion – adeneo

+0

Je préfère 1, seulement parce qu'il est plus court –

Répondre

0

Quelle est votre sens?

vous voulez vérifier un propriétaire d'objet ou une instance d'un autre objet?

'navigator' in window different with typeof window.navigator !== "undefined" 

si vous voulez vérifier, ne navigateur dans la fenêtre que vous feriez mieux d'utiliser

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

et si vous voulez vérifier par exemple, vous feriez mieux utiliser des mots clés instance de

attention de salaire

vous ne devriez pas utiliser

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

Vous avez dit, '' navigator 'in window' est différent avec 'typeof window.navigator! ==" undefined "' Comment est-ce? – GetGimphed

1

Si elle est un objet, en dessous de quatre méthodes devraient avoir la même complexité temporelle:

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

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

if(window.navigator){...} 

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

1.In la première façon, si vous vérifiez le navigateur comme une variable »

if(navigator) 

et la variable de navigation n'a pas été déclarée votre code conduira à une erreur. Toutefois, si vous vous vérifiez comme un paramètre de la fenêtre, comme:

if(window.navigator) 

vous n'obtiendrez une erreur et votre chèque se traduira par undefinded => false (puisque vous convertir à l'intérieur du booléen « si "déclaration". Il est important de se souvenir que l'instruction if produira également false si votre variable est nulle.

2. Avec la deuxième syntaxe, vous vérifiez exactement ce que vous mentionnez dans votre question. "Je dois vérifier si un objet enfant est disponible dans un objet ou non." En conclusion, je recommanderais la deuxième façon pour votre question.

+1

La première façon n'est pas 'if (navigateur)' ou 'if (window.navigator)'. C'est 'if ('navigator' dans la fenêtre)'. – GetGimphed