La méthode hasOwnProperty de JavaScript est utilisée pour vérifier si un objet donné a une propriété spécifique.
La propriété vérifiée par la méthode hasOwnProperty est interne à l’objet en question, c’est-à-dire qu’elle doit avoir été définie par l’utilisateur.
Si la propriété passée à hasOwnProperty existe sur l’objet, la méthode retourne true , sinon elle retourne false .
Exemple 1:
Dans cet exemple, nous créons l' objet person et ajoutons la propriété name , puis nous utilisons hasOwnProperty pour vérifier que cette propriété fait partie de notre objet.
1var person = {
2 "name": "Brian",
3 "lastName": "Scott"
4};
5
6console.log( person.hasOwnProperty("name") );
Sortir:
1true
Exemple 2 :
Dans cet exemple, nous allons déclarer un objet nommé car et lui attribuer une propriété appelée portes , nous pouvons donc utiliser hasOwnProperty pour vérifier cette propriété.
1var car = {
2 "doors": 4,
3 "engine": 2.0,
4 "color": "black"
5};
6
7var hasDoor = car.hasOwnProperty("doors");
8
9console.log(hasDoor);
Sortir:
1true
Exemple 3 :
Ici, nous allons volontairement mal orthographier le nom de la propriété de notre objet afin que la méthode hasOwnProperty renvoie false .
1var shoppingCart = {
2 "fruits": true,
3 "bread": false
4};
5
6var hasFruits = shoppingCart.hasOwnProperty("fruites");
7
8console.log(hasFruits);
Sortir:
1false
Pourquoi est-il important d’utiliser la méthode hasOwnProperty ?
Examinons l’importance d’utiliser la méthode hasOwnProperty pour vérifier si une propriété existe dans un objet en JavaScript.
Tout en JavaScript est un objet.
C’est vrai, tout élément créé en JavaScript est considéré comme un objet. Les nombres, les chaînes de texte, les tableaux et tout autre type de données JavaScript héritent des propriétés d’un objet parent.
Exemple 1:
Le type de données numérique en JavaScript est considéré comme un objet.
1var number = 10.22333;
2var otherNumber = number.toPrecision(3);
3
4console.log(otherNumber);
Sortir:
110.2
Exemple 2 :
Le type de données chaîne est également considéré comme un objet.
1var name = "Peter Max";
2var char = name.charAt(2);
3
4console.log(char);
Sortir:
1t
Exemple 3 :
Même les tableaux en JavaScript sont des objets.
1var cars = ["BMW", "Audi", "Aston Martin"];
2
3var carIndexNumber = cars.indexOf("BMW");
4
5console.log(carIndexNumber);
Sortir:
10
Dans les exemples précédents, tous les objets héritent des propriétés de l’objet principal, Object.
La commande “in” en JavaScript
Les nouveaux programmeurs JavaScript utilisent généralement la commande in pour vérifier si une propriété existe sur un objet donné.
Exemple:
1var car = {
2 "doors": 2,
3 "engine": 1.2,
4 "color": "yellow"
5};
6
7if ("engine" in car) {
8 console.log("true");
9} else {
10 console.log("false");
11}
Sortir:
1true
Le problème est que la commande in est complète. Il effectuera une recherche de toutes les propriétés de l’objet. Les propriétés créées par l’utilisateur et les propriétés héritées de l’objet parent sont incluses dans la vérification.
Cela peut provoquer une erreur logique si le programmeur n’exécute un morceau de code que si une propriété d’objet existe.
Mais le programmeur veut vérifier une propriété par défaut de l’objet ? Ou une propriété créée par l’utilisateur ?
Exemple:
1var car = {
2 "doors": 2,
3 "engine": 1.2,
4 "color": "yellow"
5};
6
7if ("toString" in car) {
8 console.log("true");
9} else {
10 console.log("false");
11}
Sortir:
1true
Dans l’exemple précédent, la commande in renvoie true , c’est-à-dire qu’elle suppose que la propriété toString existe dans notre objet, même si cette propriété n’a pas été déclarée par nous.
La propriété/méthode toString est héritée de l’objet parent. Pour éviter cette confusion, utilisez toujours la méthode hasOwnProperty .
Exemple:
1var car = {
2 "doors": 2,
3 "engine": 1.2,
4 "color": "yellow"
5};
6
7if ( car.hasOwnProperty("toString") ) {
8 console.log("true");
9} else {
10 console.log("false");
11}
Sortir:
1false
Maintenant, le retour était la valeur false . En effet, comme nous l’avons vu précédemment, la méthode hasOwnProperty recherche uniquement les propriétés définies par l’utilisateur.