Maison  >  Article  >  interface Web  >  Pourquoi utiliser un tableau vide avec `.forEach.call()` en JavaScript ?

Pourquoi utiliser un tableau vide avec `.forEach.call()` en JavaScript ?

Barbara Streisand
Barbara Streisandoriginal
2024-10-25 00:42:30605parcourir

Why Use an Empty Array with `.forEach.call()` in JavaScript?

Comprendre le comportement de [].forEach.call() en JavaScript

Cet extrait de code non conventionnel, où un tableau vide précède la méthode forEach, a intrigué les développeurs . Voyons comment cela fonctionne.

Tableau vide - Une astuce pour accéder aux prototypes de tableau

Le tableau vide a un objectif particulier : il permet d'accéder à des prototypes de tableau comme .forEach. L'utilisation d'un tableau vous donne directement cette fonctionnalité sans avoir besoin d'écrire explicitement Array.prototype.forEach.call(...);.

forEach - Itération avec personnalisation

forEach est une fonction qui prend une autre fonction en entrée. Pour chaque élément d'un objet de type tableau (comme une liste de nœuds), il transmet trois arguments :

  • L'élément lui-même
  • L'index de l'élément
  • Une référence à l'objet de type tableau

.call - Modification de ce contexte

La méthode .call vous permet d'invoquer une fonction avec un ce contexte spécifique. Dans ce cas, il remplace le this de la fonction interne par la liste de nœuds, garantissant que la fonction peut accéder aux éléments par index.

Exemple

Considérez ceci :

[1,2,3].forEach.call( document.querySelectorAll('a'), function(el) { /* logic */ });

Ce code utilise le tableau vide pour accéder au prototype .forEach, transmet la liste de nœuds à forEach et parcourt chaque balise, donnant accès à l'élément, à son index et à la liste complète des nœuds.

Démystifier les problèmes de programmation fonctionnelle

Bien que certains soutiennent que l'utilisation de cette technique est inélégante par rapport au bouclage manuel, elle sert un objectif lorsque vous devez modifier le monde extérieur (par exemple, DOM) plusieurs fois tout en accédant aux informations d'un élément ou d'un index.

Solutions modernes dans ES6 et au-delà

Dans les versions JavaScript modernes et avec des outils comme Babel, vous pouvez utiliser les opérateurs ... rest et spread pour obtenir des fonctionnalités similaires plus proprement. Cependant, les principes fondamentaux consistant à utiliser un tableau vide pour accéder au prototype de tableau et à modifier ce contexte avec .call restent pertinents.

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