Zeph (./272) :
Pour le reste, je n'y peux rien si tu tombes sur des tutos écris par des gens qui ne savent pas s'ils veulent des classes ou non
Je trouve que c'est assez puissant de pouvoir implémenter aussi facilement les classes et l'héritage dans un langage, mais en pratique ça n'est utile que si on veut vraiment faire de la POO dans un gros framework.
Je n'ai toujours pas vu l'intérêt du système par prototypes, à vrai dire

Enfin, pour les hashmaps, les objects en sont et il n'y a aucun filtrage à faire ?
Tu devrais jouer avec ExtJS ^^ Tes objects vont se retrouver avec des propriétés inconnues.
D'ailleurs, je bosse sur un petit projet actuellement que j'ai décidé de faire proprement, donc en activant les warning (JSHint/JSLint). Il râle à chaque boucle
for
key in my_hashmap en disant que je dois filtrer les propriétés pour ne garder que celles intéressantes

À mon avis une bonne partie de ces confusions viennent du fait qu'on regarde JavaScript avec un a priori "objet", or ce n'est pas du tout un langage objet. Du coup on essaie de réimplémenter les objets pour se mettre en terrain connu, on s'étonne du fait que le mot-clé "this" ne fasse pas la même chose que dans des langages objets, etc. Pourtant ces concepts ne sont pas plus ou moins logiques, à condition de ne pas les appréhender en ayant trop d'idées déjà faites à propos de ce que "devrait" faire this, ce que "devrait" supporter switch comme syntaxe ou ce que "devrait" faire un tableau quand on examine ses propriétés.
En pratique, je suis quand même tout le temps obligé d'utiliser des fonctions anonymes pour des trucs vraiment bêtes, simplement à cause de ça

Accessoirement, je n'aime pas les langages dont les opérations de base ne respectent pas les propriétés classiques (genre la commutativité de l'addition, que la soustraction ne soit pas l'inverse de l'addition, …).