L'opérateur in
L'opérateur in
renvoie true
si une propriété donnée appartient à l'objet donné (directement ou via sa chaîne de prototype).
Exemple interactif
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
"marque" in voiture // renvoie true
"Accord" in voiture // renvoie false
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. SI on souhaite la présence d'une propriété non-héritée, on utilisera plutôt Object.prototype.hasOwnProperty()
.
"toString" in {}; // renvoie true
Spécifications
Specification |
---|
ECMAScript Language Specification # sec-relational-operators |
Compatibilité des navigateurs
BCD tables only load in the browser