Get to know MDN better
Cette page a été traduite à partir de l'anglais par la communauté. Vous pouvez contribuer en rejoignant la communauté francophone sur MDN Web Docs.
Cette fonctionnalité est bien établie et fonctionne sur de nombreux appareils et versions de navigateurs. Elle est disponible sur tous les navigateurs depuis mars 2022.
Expérimental: Il s'agit d'une technologie expérimentale.
Vérifiez attentivement le tableau de compatibilité des navigateurs avant de l'utiliser en production.
La méthode statique Object.hasOwn() renvoie true si l'objet indiqué possède la propriété indiquée comme propriété propre. Si la propriété est héritée ou qu'elle n'existe pas, la méthode renverra false.
Note : Object.hasOwn() est conçu comme une méthode de remplacement pour Object.hasOwnProperty().
L'objet JavaScript pour lequel on souhaite tester la présence d'une propriété.
propUne chaîne de caractères (String) indiquant le nom de la propriété recherchée ou un symbole (Symbol) désignant la propriété.
true si l'objet indiqué possède, directement, la propriété indiquée, false sinon.
La méthode Object.hasOwn() renvoie true si la propriété indiquée est une propriété directe de l'objet (et même si celle-ci vaut null ou undefined). La méthode renvoie false si la propriété est héritée ou si elle n'a pas été déclarée. À la différence de l'opérateur in, cette méthode ne consulte pas la chaîne de prototypes de l'objet pour détecter la propriété.
Object.hasOwn() pourra être recommandée en lieu et place de Object.hasOwnProperty() car elle fonctionne sur les objets créés avec Object.create(null) et pour les objets qui ont surchargé la méthode héritée hasOwnProperty(). Bien qu'il soit possible de contourner ces deux problèmes en invoquant Object.prototype.hasOwnProperty() sur un objet externe, Object.hasOwn() semble plus intuitif.
Le code suivant illustre comment déterminer si l'objet exemple contient une propriété intitulée prop.
Dans l'exemple suivant, on distingue les propriétés propres/directes et celles qui sont héritées via la chaîne de prototypes :
Pour parcourir les propriétés énumérables d'un objet, on privilégiera cette forme :
S'il est nécessaire d'utiliser for..in, on pourra utiliser Object.hasOwn() afin de filtrer les propriétés héritées :
Les éléments d'un tableau (Array) sont définis comme propriétés propres. Ainsi, Object.hasOwn() pourra être utilisé pour vérifier si un indice donné existe :
Cette section illustre l'immunité de Object.hasOwn() concernant des problèmes qui se posent pour Object.prototype.hasOwnProperty(). Tout d'abord, on peut utiliser cette première avec des objets qui ont réimplémenté hasOwnProperty() :
On peut également l'utiliser pour tester des objets créés avec Object.create(null) qui n'héritent pas de Object.prototype et pour qui hasOwnProperty() est donc inaccessible.
| ECMAScript® 2027 Language Specification # sec-object.hasown |
Activez JavaScript pour afficher ce tableau de compatibilité des navigateurs.
Cette page a été modifiée le 9 oct. 2025 par les contributeur·ice·s du MDN.
Votre modèle pour un internet meilleur.
Visitez la société mère à but non lucratif de Mozilla Corporation, la Fondation Mozilla.
Certaines parties de ce contenu sont protégées par le droit d'auteur ©1998—2026 des contributeurs individuels de mozilla.org. Contenu disponible sous une licence Creative Commons.