Cette page a été traduite à partir de l'anglais par la communauté.Vous pouvez contribuer en rejoignant la communauté francophone sur MDN Web Docs.
Object.prototype.hasOwnProperty()
Baseline Widely available
Cette fonctionnalité est bien établie et fonctionne sur de nombreux appareils et versions de navigateurs. Elle est disponible sur tous les navigateurs depuis juillet 2015.
La méthodehasOwnProperty() retourne un booléen indiquant si l'objet possède la propriété spécifiée "en propre", sans que celle-ci provienne de la chaîne de prototypes de l'objet.
Dans cet article
Exemple interactif
const object1 = {};object1.property1 = 42;console.log(object1.hasOwnProperty("property1"));// Expected output: trueconsole.log(object1.hasOwnProperty("toString"));// Expected output: falseconsole.log(object1.hasOwnProperty("hasOwnProperty"));// Expected output: falseSyntaxe
obj.hasOwnProperty(prop);Paramètres
Valeur de retour
Un booléen qui indique si l'objet possède ou non la propriété indiquée en argument et que celle-ci est directement rattachée à l'objet (elle ne provient pas de la chaîne de prototypes de l'objet).hasOwnProperty() renvoietrue si la propriété existe et que sa valeur estnull ouundefined.
Description
Chaque objet descendant d'Object hérite de la méthodehasOwnProperty(). Cette méthode peut être utilisée pour déterminer si un objet a la propriété spécifiée en tant que propriété directe de cet objet. Contrairement à l'opérateurin, cette méthode ne vérifie pas la chaîne des prototypes de l'objet. Si l'objet est un tableau (Array), la méthodehasOwnProperty() pourra être utilisée afin de vérifier la présence d'un index.
Exemples
>UtiliserhasOwnProperty() pour tester l'existence d'une propriété
L'exemple suivant détermine si l'objeto contient une propriété appeléeprop:
o = new Object();o.hasOwnProperty("prop"); // falseo.prop = "exists";o.hasOwnProperty("prop"); // truePropriétés directes et propriétés héritées
L'exemple suivant illustre la différence entre les propriétés directes et les propriétés héritées à partir de la chaîne de prototypes :
o = new Object();o.prop = "exists";o.hasOwnProperty("prop");// retourne trueo.hasOwnProperty("toString");// retourne falseo.hasOwnProperty("hasOwnProperty");// retourne falseParcourir les propriétés d'un objet
L'exemple suivant montre comment parcourir les propriétés d'un objet sans traiter les propriétés héritées. On notera que la bouclefor...in ne prend en compte que les éléments énumérables. Il ne faut donc pas déduire de l'absence de propriétés non-énumérables dans la boucle, quehasOwnProperty() est elle-même strictement restreinte aux éléments énumérables (comme c'est le cas pourObject.getOwnPropertyNames()) .
var bidule = { truc: "stack",};for (var nom in bidule) { if (bidule.hasOwnProperty(nom)) { console.log( "C'est bien la propriété (" + nom + "), sa valeur : " + bidule[nom], ); } else { console.log(nom); // toString ou autre }}hasOwnProperty() en tant que propriété
JavaScript ne protège pas le nom de propriétéhasOwnProperty, ainsi il est possible qu'un objet puisse avoir une propriété avec ce nom, il sera donc nécessaire d'utiliser une version externe de la méthode pour obtenir des résultats corrects.
var toto = { hasOwnProperty: function () { return false; }, truc: "Voici les dragons",};toto.hasOwnProperty("truc"); // renvoie toujours false// On utilise une méthode d'un autre objet// et on l'appelle avec this qui vaut toto({}).hasOwnProperty.call(toto, "truc"); // true// On peut aussi utiliser la propriété hasOwnProperty de Object prototypeObject.prototype.hasOwnProperty.call(toto, "truc"); // trueLa dernière version utilisée permet de ne pas créer d'objet supplémentaire.
Spécifications
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # sec-object.prototype.hasownproperty> |