L'opérateur in
renvoie true
si la propriété donnée appartient à l'objet donné.
Syntaxe
propriété in nomObjet
Paramètres
propriété
- Une expression évaluée en un nombre ou une chaîne de caractères qui représente le nom d'une propriété ou l'indice d'un tableau.
nomObjet
- Le nom de l'objet qu'on souhaite inspecter.
Description
Les exemples suivants illustrent certaines utilisation de l'opérateur in
.
// Tableaux var arbres = ["sapin", "hêtre", "cèdre", "chêne", "érable"]; 0 in arbres // renvoie true 3 in arbres // renvoie true 6 in arbres // renvoie false "hêtre" in arbres // renvoie false (l'indice doit être spécifié, pas la valeur à cet indice) "length" in arbres // renvoie true (length est une propriété des objets Array) Symbol.iterator in arbres // renvoie true (les tableaux sont itérables, à partir d'ES6) // Objets prédéfinis "PI" in Math // renvoie true var ma_chaine = new String("corail"); "length" in ma_chaine // renvoie true // Objets personnalisés var voiture = {marque : "Honda", modèle : "Accord", année : 1998}; "marque" in voiture // renvoie true "modèle" in voiture // renvoie true
L'opérande droit doit toujours être du type objet (et pas un autre type primitif). Par exemple, on peut utiliser une chaîne créée avec le constructeur String
, mais pas une chaîne littérale.
var couleur1 = new String("vert"); "length" in couleur1 // renvoie true var couleur2 = "corail"; "length" in couleur2 // génère une erreur (couleur n'est pas un objet String)
Utilisation de l'opérateur in
avec des propriétés supprimées ou indéfinies
Si une propriété est supprimée avec l'opérateur delete
, l'opérateur in
renvoie false
pour cette propriété.
var voiture = {marque : "Honda", modèle : "Accord", année : 1998}; delete voiture.marque; "marque" in voiture // renvoie false var arbres = new Array("sapin", "hêtre", "cèdre", "chêne", "érable"); delete arbres[3]; 3 in arbres // renvoie false
Si une propriété est définie à undefined
mais n'est pas supprimée, l'opérateur in
renverra true
pour cette propriété.
var voiture = {marque : "Honda", modèle : "Accord", année : 1998}; voiture.marque = undefined; "marque" in voiture // renvoie true var arbres = new Array("sapin", "hêtre", "cèdre", "chêne", "érable"); arbres[3] = undefined; 3 in arbres // renvoie true
Propriétés héritées
L'opérateur in
renvoie true
pour les propriétés qui appartiennent à la chaîne de prototypes.
"toString" in {}; // renvoie true
Spécifications
Spécification | État | Commentaires |
---|---|---|
ECMAScript 2017 Draft (ECMA-262) La définition de 'Relational Operators' dans cette spécification. |
Projet | |
ECMAScript 2015 (6th Edition, ECMA-262) La définition de 'Opérateurs relationnels' dans cette spécification. |
Standard | |
ECMAScript 5.1 (ECMA-262) La définition de 'Opérateur in' dans cette spécification. |
Standard | |
ECMAScript 3rd Edition (ECMA-262) La définition de 'Opérateurs in' dans cette spécification. |
Standard | Définition initiale. Implémentée avec JavaScript 1.4. |
Compatibilité des navigateurs
Fonctionnalité | Chrome | Firefox (Gecko) | Internet Explorer | Edge | Opera | Safari |
---|---|---|---|---|---|---|
Support simple | (Oui) | (Oui) | (Oui) | (Oui) | (Oui) | (Oui) |
Fonctionnalité | Android | Chrome pour Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|
Support simple | (Oui) | (Oui) | (Oui) | (Oui) | (Oui) | (Oui) |