Réflexion nocture : l'encaspulation en Javascript - Version imprimable +- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org) +-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38) +--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51) +--- Sujet : Réflexion nocture : l'encaspulation en Javascript (/showthread.php?tid=5980) Pages :
1
2
|
Réflexion nocture : l'encaspulation en Javascript - Maks - 18-02-2012
Je viens de gribouiller ça sur JSBin ^^ Sympa non ? J'essaie de trouver des tricks pour me rapprocher de la POO de Java et PHP ^^ RE: Réflexion nocture : l'encaspulation en Javascript - Angelblade - 18-02-2012 Euh je comprend pas ce que tu essaye de faire RE: Réflexion nocture : l'encaspulation en Javascript - Sephi-Chan - 18-02-2012 N'utilisez pas la balise code toute seule : spécifiez le langage avec code=javascript !Je ne comprends pas bien l'intérêt de faire ressembler Javascript avec les langages orientés objet alors qu'il ne l'est pas (il est orienté prototype). Autant apprendre à l'utiliser avec ses spécificités, non ? Ou alors utiliser un outil comme CoffeeScript, ça rend l'écriture de Javascript très plaisante et infiniment plus concise, c'est très agréable quand on fait des applications riches en Javascript (avec Backbone, par exemple). RE: Réflexion nocture : l'encaspulation en Javascript - Maks - 18-02-2012 (18-02-2012, 09:02 AM)Angelblade a écrit : Euh je comprend pas ce que tu essaye de faire J'ai rendu les attributs de la classe Foo privés et mis en place des setter et getter Sephi > Oui ça n'est qu'une petite réflexion Seulement avoir choisi de ne proposer que des attributs publics dans les classes c'est quand même discutable, en tout cas quand on vient de PHP/Java ect ça choque un peu ^^ Le modèle "objet" n'est pas très riche. CoffeeScript ça m'a l'air cool en effet, y'a une syntaxe pour l'héritage en plus notamment, une sorte de JS amélioré. RE: Réflexion nocture : l'encaspulation en Javascript - Sephi-Chan - 18-02-2012 (18-02-2012, 01:09 PM)Maks a écrit : Sephi > Oui ça n'est qu'une petite réflexion Ce n'est pas pertinent de façonner les outils existant parce que tu n'en as pas l'habitude. À vouloir donner un comportement contre-nature à Javascript, tu vas lui faire perdre sa puissance qui vient des mécanismes auxquels tu n'es pas habitué. L'alternative est de se tourner vers des langages alternatifs. Pour les langages browser-side, c'est un peu embêtant mais on arrive malgré ça à avoir des alternatives comme CoffeeScript ou Dart, qui sont compilés en Javascript. (18-02-2012, 01:09 PM)Maks a écrit : CoffeeScript ça m'a l'air cool en effet, y'a une syntaxe pour l'héritage en plus notamment, une sorte de JS amélioré. CoffeeScript génère du Javascript tout simple : il ne fournit aucun runtime. Il faut rester prudent concernant certains mécanismes. RE: Réflexion nocture : l'encaspulation en Javascript - Maks - 18-02-2012 Je n'ai aucun problème avec le modèle objet (ou prototypal) actuel de JS, que je maitrise très bien. D'ailleurs dans mon exemple il est intégralement conservé. Si je suis ton raisonnement, alors les closures sont aussi une utilisation contre-nature de Javascript ? RE: Réflexion nocture : l'encaspulation en Javascript - Sephi-Chan - 18-02-2012 Je parle de manière générale de la volonté de transformer Javascript en langage objet classique, pas de ce cas en particulier. Et au contraire, l'utilisation des closures fait partie de ces choses déroutante quand on commence à jouer avec Javascript mais qui est en réalité un mécanisme très puissant. Javascript, c'est cool. RE: Réflexion nocture : l'encaspulation en Javascript - Maks - 18-02-2012 Oui, on trouve plein de codes farfelus sur le web pour simuler certaines choses en objet "classique" en JS. Je trouvais mon exemple plutôt simple à comprendre plutôt que des choses comme : http://ejohn.org/blog/javascript-getters-and-setters/ Au passage pour hériter des attributs privés, il suffira de faire Foo.call(this); Je n'ai fait qu'une simple closure (mot-clé return) en réalité donc rien d'exotique Après loin de moi l'idée de lancer les hostilités contre JS, qui reste mon langage préféré RE: Réflexion nocture : l'encaspulation en Javascript - Angelblade - 18-02-2012 Ah okkkk. Chuis pas sur de l'utilité mais intéressant RE: Réflexion nocture : l'encaspulation en Javascript - niahoo - 18-02-2012 Mouais, pour quelqu'un qui maitrise "très bien" le modèle objet de javascript, tu devrais tester ton code avant de nous le montrer, histoire qu'on apperenne pas des bêtises
déjà ta fonction setAttribut1 traffique self.attribut et non pas self.attribut1. Ensuite tu définis ta variable dans la fonction Foo,donc quand tu en modifies ensuite le prototype, tu n'est plus dans le même scope. La variable self que tu modifies est l'objet window, précisément window.self qui référence window |