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 } }
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!