Maison > interface Web > js tutoriel > Pourquoi l'itération « for...in » inclut-elle parfois des propriétés inattendues et comment puis-je éviter cela ?

Pourquoi l'itération « for...in » inclut-elle parfois des propriétés inattendues et comment puis-je éviter cela ?

Patricia Arquette
Libérer: 2024-12-24 12:49:11
original
245 Les gens l'ont consulté

Why Does `for...in` Iteration Sometimes Include Unexpected Properties, and How Can I Avoid This?

Itération des propriétés d'un objet : dévoiler les mystères de Propt

Lors de l'itération des propriétés d'un objet à l'aide de la boucle for...in, une variable connue sous le nom de propt apparaît. Cette variable représente chaque clé de propriété de l'objet. Mais pourquoi cela fonctionne-t-il de cette façon ?

La raison est que Object.prototype contient des propriétés supplémentaires héritées par tous les objets. Ces propriétés ne font pas partie de l'objet spécifique mais sont partagées par tous les objets. Par exemple, toString et hasOwnProperty sont deux exemples courants.

Pour éviter de parcourir par inadvertance ces propriétés héritées, il est crucial d'inclure une vérification supplémentaire : Object.prototype.hasOwnProperty.call(obj, prop). Cette vérification garantit que la propriété sur laquelle l'itération appartient spécifiquement à l'objet et n'a pas été héritée de la classe de base.

Pour plus de clarté, voici un exemple de code mis à jour :

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

De plus, bien qu'il soit possible d'utiliser obj.hasOwnProperty(prop) à la place, cette méthode peut mal fonctionner si l'objet a un champ sans rapport avec le même nom. En tant que tel, appeler hasOwnProperty via Object.prototype est plus fiable.

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