Movatterモバイル変換


[0]ホーム

URL:


  1. Web
  2. JavaScript
  3. Référence
  4. Objets natifs standards
  5. Object
  6. Object.hasOwn()

Cette page a été traduite à partir de l'anglais par la communauté.Vous pouvez contribuer en rejoignant la communauté francophone sur MDN Web Docs.

View in EnglishAlways switch to English

Object.hasOwn()

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 ⁨mars 2022⁩.

Expérimental:Il s'agit d'unetechnologie expérimentale.
Vérifiez attentivement letableau de compatibilité des navigateurs avant de l'utiliser en production.

La méthode statiqueObject.hasOwn() renvoietrue 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 renverrafalse.

Note :Object.hasOwn() est conçu comme une méthode de remplacement pourObject.hasOwnProperty().

Exemple interactif

const object1 = {  prop: "exists",};console.log(Object.hasOwn(object1, "prop"));// Expected output: trueconsole.log(Object.hasOwn(object1, "toString"));// Expected output: falseconsole.log(Object.hasOwn(object1, "undeclaredPropertyValue"));// Expected output: false

Syntaxe

js
Object.hasOwn(instance, prop);

Paramètres

instance

L'objet JavaScript pour lequel on souhaite tester la présence d'une propriété.

prop

Une chaîne de caractères (String) indiquant le nom de la propriété recherchée ou un symbole (Symbol) désignant la propriété.

Valeur de retour

true si l'objet indiqué possède, directement, la propriété indiquée,false sinon.

Description

La méthodeObject.hasOwn() renvoietrue si la propriété indiquée est une propriété directe de l'objet (et même si celle-ci vautnull ouundefined). La méthode renvoiefalse si la propriété est héritée ou si elle n'a pas été déclarée. À la différence de l'opérateurin, 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 deObject.hasOwnProperty() car elle fonctionne sur les objets créés avecObject.create(null) et pour les objets qui ont surchargé la méthode héritéehasOwnProperty(). Bien qu'il soit possible de contourner ces deux problèmes en invoquantObject.prototype.hasOwnProperty() sur un objet externe,Object.hasOwn() semble plus intuitif.

Exemples

Utiliser Object.hasOwn() pour tester l'existence d'une propriété

Le code suivant illustre comment déterminer si l'objetexemple contient une propriété intituléeprop.

js
let exemple = {};Object.hasOwn(exemple, "prop"); // false : 'prop' n'a pas été définieexemple.prop = "existe";Object.hasOwn(exemple, "prop"); // true : 'prop' a été définieexemple.prop = null;Object.hasOwn(exemple, "prop"); // true : la propriété existe malgré sa valeur nullexemple.prop = undefined;Object.hasOwn(exemple, "prop"); // true : la propriété existe malgré sa valeur undefined

Propriétés propres et propriétés héritées

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 :

js
let exemple = {};exemple.prop = "existe";// `Objet.hasOwn()` renverra true seulement pour les propriétés propresObject.hasOwn(exemple, "prop"); // renvoie trueObject.hasOwn(exemple, "toString"); // renvoie falseObject.hasOwn(exemple, "hasOwnProperty"); // renvoie false// L'opérateur `in` renverra true pour les propriétés propres et héritées"prop" in exemple; // renvoie true"toString" in exemple; // renvoie true"hasOwnProperty" in exemple; // renvoie true

Parcourir les propriétés d'un objet=

Pour parcourir les propriétés énumérables d'un objet, on privilégiera cette forme :

js
let exemple = { toto: true, truc: true };for (let nom of Object.keys(exemple)) {  // …}

S'il est nécessaire d'utiliserfor..in, on pourra utiliserObject.hasOwn() afin de filtrer les propriétés héritées :

js
let exemple = { toto: true, truc: true };for (let nom in exemple) {  if (Object.hasOwn(exemple, nom)) {    // …  }}

Vérifier l'existence d'un indice dans un tableau

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 :

js
let fruits = ["Pomme", "Banane", "Melon", "Orange"];Object.hasOwn(fruits, 3); // true ('Orange')Object.hasOwn(fruits, 4); // false, non défini

Cas problématiques pour hasOwnProperty()

Cette section illustre l'immunité deObject.hasOwn() concernant des problèmes qui se posent pourObject.prototype.hasOwnProperty(). Tout d'abord, on peut utiliser cette première avec des objets qui ont réimplémentéhasOwnProperty() :

js
let toto = {  hasOwnProperty: function () {    return false;  },  truc: "Ga bu zo meu",};if (Object.hasOwn(toto, "truc")) {  console.log(toto.truc); //true - la surcharge de hasOwnProperty() n'a pas d'impact}

On peut également l'utiliser pour tester des objets créés avecObject.create(null) qui n'héritent pas deObject.prototype et pour quihasOwnProperty() est donc inaccessible.

js
let toto = Object.create(null);toto.prop = "existe";if (Object.hasOwn(toto, "prop")) {  console.log(toto.prop); // true.}

Spécifications

Specification
ECMAScript® 2026 Language Specification
# sec-object.hasown

Compatibilité des navigateurs

Voir aussi

Help improve MDN

Learn how to contribute

Cette page a été modifiée le par lescontributeurs du MDN.


[8]ページ先頭

©2009-2025 Movatter.jp