Zeph (./2859) :
Heu... tu sors ça d'où ? Ça ne marche pas dans mon browser et ça n'apparaît pas non plus dans la spécification ? (et pas plus dans celle de Mozilla, que je suis allé voir au cas où)
pourtant :
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys et
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/values (en effet, c'est expérimental, je n'avais pas vu)
flanker (./2858) :
Donc dire que {} n'a aucun rapport, même de loin, avec une hash table me semble un tantinet exagéré 
Si jamais pour toi "utiliser les caractères { et } en commun" est un critère alors d'accord, mais pour moi non ça n'est pas exagéré, je pense réellement que le concept n'a rien en commun (pour des raisons déjà expliquées plus haut donc on tourne un peu en rond)
Bah il y a quand même la syntaxe toto["ma_clef"] et toto["ma_clef"] = "ma_valeur", qui fait aussi furieusement penser aux HashMap de beaucoup de langages

La doc officielle de Mozilla dit également que «[...] les objets JavaScript ont été utilisés comme des Maps », ou encore « Dans la plupart des scénarios, les objets restent une solution valide [pour une HashMap] ». Mais bon, à la base, ce n'était qu'un exemple d'un mauvais aspect de JS, qui pousse à l'erreur. Bien sûr, si on maîtrise la doc *officielle* et qu'on ne fait pas confiance à StackOverflow (au hasard), on ne tombera pas dans les pièges comme celui-ci.
flanker (./2858) :
C'est viable quand on bosse sans aucune lib externe, mais sinon, je trouve ça beaucoup trop dangereux.
Bah oui bien sûr, là encore c'est le postulat de départ : le JS a été conçu pour être exécuté dans un environnement isolé. Je ne conteste pas le fait qu'on le pousse trop loin en essayant de l'utiliser comme technologie côté serveur et lui faire faire des choses qui n'ont pas été prévues au moment de sa conception. Je dis simplement que replacé dans son contexte c'est un langage qui beaucoup de choix intéressants.
Même côté client. J'ai déjà eu des bugs très rigolos (malgré ma faible expérience JS), où justement l'inclusion d'une lib tierce-partie a flingué mon code parce qu'il ajoutait des méthodes à des objets de base.
Pourtant, on était bien dans le cas d'usage du JS ^^
Pas du tout non, c'est une méthode d'initialisation. [...]
Ok, je n'avais pas la bonne définition de constructeur en tête. je connais la différence de comportement suivant les langages que j'utilise, mais pour le coup le comportement ne m'a pas spécialement choqué, il est simplement différent (ni meilleur, ni moins bon). Je n'avais jamais fait gaffe que la doc ne parlait jamais de constructeur mais seulement d'__init__.