2 votes

Pourquoi Symbol.iterator a été conçu de type Symbol ?

J'apprends à connaître Symbol et les itérateurs en JavaScript. J'ai lu et regardé quelques vidéos à leur sujet, donc ils sont maintenant plus ou moins clairs.

Je voudrais juste comprendre ce que mon manuel (Eloquent JavaScript) veut dire par là :

Notez que le next , value y done les noms des propriétés sont des chaînes de caractères simples, et non des symboles. Seul Simbol.iterator qui est susceptible d'être ajouté à un grand nombre d'objets différents, est un symbole réel.

Pourquoi une propriété susceptible d'être trouvée dans différents objets doit-elle être un symbole ?

Can objOne.iterator y objTwo.iterator que les propriétés régulières créent des problèmes ?

3voto

CertainPerformance Points 110949

Les symboles sont des propriétés uniques sur les objets. Si l'on crée un symbole et qu'on le place sur un objet, il n'y a aucune chance qu'un autre symbole soit placé sur l'objet et provoque des bugs dus à une collision de noms.

Utilisation de Symbol.iterator comme le symbole unique pour les itérateurs pour potentiellement tout élimine la possibilité de bogues de collision de propriétés. Par exemple, si .iterator si la propriété (chaîne de caractères) était utilisée à la place, les objets ne pouvaient plus facilement avoir l'attribut .iterator propriété sauf si il a spécifiquement implémenté le protocole des itérateurs.

Prenez également en compte l'ancien code qui pouvait avoir des objets avec un nom de domaine iterator mais n'étaient pas destinés à être des itérateurs ES2015+ - que faire avec eux ? Il est préférable d'utiliser un symbole pour ne pas avoir à se soucier de ce genre de choses.

anyPossibleObj[Symbol.iterator] est beaucoup plus sûr que anyPossibleObj.anyStringYouCouldThinkOf .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X