Maison >interface Web >js tutoriel >Comment puis-je ajouter des méthodes prototypes aux tableaux et aux objets sans affecter les boucles « for...in » ?

Comment puis-je ajouter des méthodes prototypes aux tableaux et aux objets sans affecter les boucles « for...in » ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-10 09:25:09993parcourir

How Can I Add Prototype Methods to Arrays and Objects Without Affecting `for...in` Loops?

Accéder aux méthodes prototypes sans gêner les itérateurs

Bien qu'étendre Array.prototype et Object.prototype avec des méthodes d'assistance soit une pratique courante, ces méthodes apparaissent souvent pendant les boucles for-in, ce qui peut causer des problèmes. Pour éviter cela, les développeurs peuvent empêcher les méthodes d'apparaître dans de telles boucles en les définissant comme non énumérables.

Solution : Propriétés non énumérables

EcmaScript 5.1 introduit la méthode Object.defineProperty(), qui peut être utilisée pour définir des propriétés non énumérables. En utilisant cette méthode, les développeurs peuvent définir l'attribut énumérable de la méthode sur false, le rendant invisible pour les boucles for-in.

L'exemple suivant montre comment définir une méthode non énumérable appelée « find » sur le Array.prototype :

Object.defineProperty(Array.prototype, "find", {
    enumerable: false,
    writable: true,
    value: function(testFun) {
        // Code to find element in the array
    }
});

Avec cette définition, la méthode find peut être utilisée comme prévu, mais elle n'apparaîtra pas dans les boucles for-in, garantissant que la boucle uniquement parcourt les valeurs réelles du tableau.

Remarque : Cette solution n'est pas prise en charge dans les anciens navigateurs qui ne prennent pas en charge EcmaScript 5.1. Pour ces navigateurs, les développeurs peuvent utiliser une bibliothèque de shim telle que es5-shims pour assurer la compatibilité. De plus, la méthode forEach(), disponible dans les navigateurs modernes, peut être utilisée comme alternative aux boucles for-in pour parcourir des tableaux sans rencontrer de méthodes prototypes.

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!

Déclaration:
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