| [ Web Proxy ] |
| Viewing: https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Global_Objects/Object/hasOwn | [Back] [Original] |
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.
Exprimental: Il s'agit d'une technologie exprimentale.
Vrifiez attentivement le tableau de compatibilit des navigateurs avant de l'utiliser en production.
La mthode statique Object.hasOwn() renvoie true si l'objet indiqu possde la proprit indique comme proprit propre. Si la proprit est hrite ou qu'elle n'existe pas, la mthode renverra false.
Note :
Object.hasOwn() est conu comme une mthode de remplacement pour Object.hasOwnProperty().
const object1 = {
prop: "exists",
};
console.log(Object.hasOwn(object1, "prop"));
// Expected output: true
console.log(Object.hasOwn(object1, "toString"));
// Expected output: false
console.log(Object.hasOwn(object1, "undeclaredPropertyValue"));
// Expected output: false
Object.hasOwn(instance, prop);
L'objet JavaScript pour lequel on souhaite tester la prsence d'une proprit.
Une chane de caractres (String) indiquant le nom de la proprit recherche ou un symbole (Symbol) dsignant la proprit.
true si l'objet indiqu possde, directement, la proprit indique, false sinon.
La mthode Object.hasOwn() renvoie true si la proprit indique est une proprit directe de l'objet (et mme si celle-ci vaut null ou undefined). La mthode renvoie false si la proprit est hrite ou si elle n'a pas t dclare. la diffrence de l'oprateur in, cette mthode ne consulte pas la chane de prototypes de l'objet pour dtecter la proprit.
Object.hasOwn() pourra tre recommande en lieu et place de Object.hasOwnProperty() car elle fonctionne sur les objets crs avec Object.create(null) et pour les objets qui ont surcharg la mthode hrite hasOwnProperty(). Bien qu'il soit possible de contourner ces deux problmes en invoquant Object.prototype.hasOwnProperty() sur un objet externe, Object.hasOwn() semble plus intuitif.
Le code suivant illustre comment dterminer si l'objet exemple contient une proprit intitule prop.
let exemple = {};
Object.hasOwn(exemple, "prop"); // false : 'prop' n'a pas t dfinie
exemple.prop = "existe";
Object.hasOwn(exemple, "prop"); // true : 'prop' a t dfinie
exemple.prop = null;
Object.hasOwn(exemple, "prop"); // true : la proprit existe malgr sa valeur null
exemple.prop = undefined;
Object.hasOwn(exemple, "prop"); // true : la proprit existe malgr sa valeur undefined
Dans l'exemple suivant, on distingue les proprits propres/directes et celles qui sont hrites via la chane de prototypes :
let exemple = {};
exemple.prop = "existe";
// `Objet.hasOwn()` renverra true seulement pour les proprits propres
Object.hasOwn(exemple, "prop"); // renvoie true
Object.hasOwn(exemple, "toString"); // renvoie false
Object.hasOwn(exemple, "hasOwnProperty"); // renvoie false
// L'oprateur `in` renverra true pour les proprits propres et hrites
"prop" in exemple; // renvoie true
"toString" in exemple; // renvoie true
"hasOwnProperty" in exemple; // renvoie true
Pour parcourir les proprits numrables d'un objet, on privilgiera cette forme :
let exemple = { toto: true, truc: true };
for (let nom of Object.keys(exemple)) {
//
}
S'il est ncessaire d'utiliser for..in, on pourra utiliser Object.hasOwn() afin de filtrer les proprits hrites :
let exemple = { toto: true, truc: true };
for (let nom in exemple) {
if (Object.hasOwn(exemple, nom)) {
//
}
}
Les lments d'un tableau (Array) sont dfinis comme proprits propres. Ainsi, Object.hasOwn() pourra tre utilis pour vrifier si un indice donn existe :
let fruits = ["Pomme", "Banane", "Melon", "Orange"];
Object.hasOwn(fruits, 3); // true ('Orange')
Object.hasOwn(fruits, 4); // false, non dfini
Cette section illustre l'immunit de Object.hasOwn() concernant des problmes qui se posent pour Object.prototype.hasOwnProperty(). Tout d'abord, on peut utiliser cette premire avec des objets qui ont rimplment hasOwnProperty() :
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 crs avec Object.create(null) qui n'hritent pas de Object.prototype et pour qui hasOwnProperty() est donc inaccessible.
let toto = Object.create(null);
toto.prop = "existe";
if (Object.hasOwn(toto, "prop")) {
console.log(toto.prop); // true.
}
| Spcification |
|---|
| ECMAScript 2027 LanguageSpecification # sec-object.hasown |
Object.hasOwnProperty()Object.getOwnPropertyNames()for...ininObject.hasOwn() disponible avec core-jsCette page a t modifie le 9 oct. 2025 par les contributeurices du MDN.
ObjectObject.assign()Object.create()Object.defineProperties()Object.defineProperty()entries()Object.freeze()Object.fromEntries()Object.getOwnPropertyDescriptor()Object.getOwnPropertyDescriptors()Object.getOwnPropertyNames()Object.getOwnPropertySymbols()Object.getPrototypeOf()Object.groupBy()Object.hasOwn()Object.is()Object.isExtensible()Object.isFrozen()Object.isSealed()Object.keys()Object.preventExtensions()Object.seal()Object.setPrototypeOf()Object.values()Object.prototype.__defineGetter__()Object.prototype.__defineSetter__()Object.prototype.__lookupGetter__()Object.prototype.__lookupSetter__()Object.prototype.hasOwnProperty()Object.prototype.isPrototypeOf()Object.prototype.propertyIsEnumerable()Object.prototype.toLocaleString()Object.prototype.toString()Object.prototype.valueOf()Object/FunctionObject.prototype.__defineGetter__()Object.prototype.__defineSetter__()Object.prototype.__lookupGetter__()Object.prototype.__lookupSetter__()Object.prototype.hasOwnProperty()Object.prototype.isPrototypeOf()Object.prototype.propertyIsEnumerable()Object.prototype.toLocaleString()Object.prototype.toString()Object.prototype.valueOf()Certaines parties de ce contenu sont protges par le droit d'auteur 19982026 des contributeurs individuels de mozilla.org. Contenu disponible sous une licence Creative Commons.
| Web Proxy Viewer | New URL | Original Page |