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!