Définir des méthodes d'assistance sur Array.prototype et Object.prototype sans les afficher dans des boucles for-in
Extension de prototypes intégrés, tels que comme Array.prototype et Object.prototype, peuvent fournir des méthodes d'assistance qui simplifient le codage. Cependant, ces méthodes peuvent apparaître de manière inattendue dans les boucles for-in, perturbant leur fonctionnalité attendue.
Problème
Ajout de méthodes d'assistance à Array.prototype, telles que la méthode find mentionné dans la question, peut introduire des propriétés indésirables lors d'une itération sur des tableaux avec des boucles for-in. Pour éviter ce problème et garantir que seuls les éléments du tableau sont renvoyés dans la boucle, il est crucial de définir correctement ces méthodes afin qu'elles n'apparaissent pas en tant que propriétés.
Solution : Propriétés non énumérables
EcmaScript 5.1 introduit le concept de propriétés non dénombrables. En définissant l'option enumerable sur false lors de la définition d'une méthode sur un prototype, vous pouvez empêcher qu'elle soit répertoriée lors des itérations for-in.
Object.defineProperty(Array.prototype, "find", { enumerable: false, writable: true, value: function(testFun) { // Code to find element in array } });
Avec cette approche, la méthode find sera disponible pour la manipulation de tableaux. mais ne sera pas inclus dans les résultats de la boucle for-in, garantissant ainsi qu'il n'interfère pas avec le comportement attendu de la boucle.
Legacy Browser Support
Pour les navigateurs qui ne prennent pas en charge les propriétés non énumérables, envisagez d'utiliser une méthode de secours ou de vérifier la présence de la propriété à l'aide de Object.prototype.hasOwnProperty.
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!