Maison > interface Web > js tutoriel > Comment puis-je parcourir en toute sécurité les propriétés d'un objet en JavaScript à l'aide de « for...in » ?

Comment puis-je parcourir en toute sécurité les propriétés d'un objet en JavaScript à l'aide de « for...in » ?

Linda Hamilton
Libérer: 2024-12-29 20:37:18
original
196 Les gens l'ont consulté

How Can I Safely Iterate Over Object Properties in JavaScript Using `for...in`?

Itération des propriétés d'objet avec for...in

Lors de l'itération dans les propriétés d'objet à l'aide de la boucle for...in, la variable de boucle propt représente la clé de la propriété à laquelle on accède. Cependant, ce n'est pas une méthode ou une propriété intégrée pour les objets.

La boucle for...in récupère à la fois les propriétés de l'objet lui-même et les propriétés héritées de son prototype. Cela peut être problématique car les propriétés héritées peuvent ne pas être destinées à être incluses dans l'itération.

Utilisation de hasOwnProperty pour une itération précise

Pour contourner ce problème, vous pouvez ajouter une vérification hasOwnProperty dans la boucle for...in :

for (var prop in obj) {
    if (Object.prototype.hasOwnProperty.call(obj, prop)) {
        // Do stuff
    }
}
Copier après la connexion

La méthode hasOwnProperty vérifie si une propriété est directement définie dans l'objet, non héritée de son prototype. En utilisant cette vérification, vous pouvez exclure les propriétés héritées de l'itération.

hasOwnProperty vs. Appel via l'objet

Vous pouvez également appeler hasOwnProperty via l'objet lui-même :

if (obj.hasOwnProperty(prop)) {
    // Do stuff
}
Copier après la connexion

Cependant, cela peut échouer si l'objet a un champ sans rapport avec le même nom que hasOwnProperty, tel que :

var obj = { foo: 42, hasOwnProperty: 'lol' };
obj.hasOwnProperty('foo'); // TypeError
Copier après la connexion

Pour éviter ce problème, il est plus sûr d'appeler hasOwnProperty via Object.prototype à la place :

Object.prototype.hasOwnProperty.call(obj, 'foo'); // True
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal