Poo et JavaScript, une notion trop incomprise

5,060 views
4,830 views

Published on

JavaScript est un des langages les plus incompris au monde. Et notamment pour son approche particulière de la programmation objet. Je vous propose d'en faire un tour complet.

Published in: Technology, Sports
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
5,060
On SlideShare
0
From Embeds
0
Number of Embeds
36
Actions
Shares
0
Downloads
59
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Poo et JavaScript, une notion trop incomprise

  1. 1. POO et JavaScript UNE NOTION TROP INCOMPRISEMathieu ROBIN
  2. 2. « The Worlds Most Misunderstood Programming  Language » Douglas Crockford
  3. 3. • Mathieu ROBIN (@mathrobin) • 25 ans • Ingénieur logiciel chez Companeo • Contributeur Developpez.com, communauté francophone de développeurs • Blogueur • http://www.mathieurobin.com • http://www.recettesensolo.com Twitter : @mathrobin Blog : MathieuRobin.com Rédacteur / Correcteur Developpez.com Chroniqueur francophone jQuery, jQuery UI, jQuery Mobile Accessoirement cuisinier
  4. 4. Classe Interface ClasseObjet Objet Objet Objet
  5. 5. Classe Interface ClasseObjet Objet Objet Objet
  6. 6. Objet
  7. 7. Number String ArrayFunction Object Date
  8. 8. Exceptions
  9. 9. undefined null NaN infinity
  10. 10. Tout objet a un prototype
  11. 11. Tout objet peut servir deprototype à un autre objet
  12. 12. Object est le pèrede tous les objets
  13. 13. Object.prototype ---> null
  14. 14. Bravo !
  15. 15. var objetNu = new Object();
  16. 16. objetNu: Object prototype: Object constructor: function Object() hasOwnProperty() isPrototypeOf() propertyIsEnumerable() toLocaleString() toString() valueOf()
  17. 17. var monLitteral = {};
  18. 18. var monLitteral = [];
  19. 19. var monLitteral = { what : ConFoo, when : 2012, where : Montréal, why : 42, and-for : speaking};
  20. 20.  Pas besoin de ou de pour les clés Vous pouvez les utiliser quand même Exception : foo-bar  Présence dun caractère « illégal »  Utilisation dun mot réservé • Ne sapplique plus avec EcmaScript 5
  21. 21. Accès aux propriétés : console.log(monLitteral.what); // ConFoo console.log(monLitteral[when]); // 2012 console.log(monLitteral.who); // undefined
  22. 22. Modification des propriétés : monLitteral.what = Confoo ; monLitteral[when] = Février-Mars 2012 ; monLitteral.who = John Doe ;
  23. 23. Suppression dune propriété : monLitteral.what = null ; monLitteral.when = undefined ; delete monLitteral.who ;
  24. 24. var monObjet = { what : ConFoo, when : 2012, where : Montréal};monObjet.sayHello = function () { console.log(Hello ConFoo 2012 !) ;}
  25. 25. var sayHello = function () { console.log(Hello ConFoo !) ;}function sayHello () { console.log(Hello ConFoo !) ;}
  26. 26. if ( true ) { function sayHello () { console.log(Hello ConFoo !) ; }}else { function sayHello () { console.log(Hello world !) ; }}
  27. 27. Tout objet a un prototype
  28. 28. monObjet.prototype.name = John Doe ;monObjet.prototype.getName = function () { return this.name ;}
  29. 29. Object Objet A Objet B Objet CObjet A1 Objet A2 Objet A3
  30. 30. Object Objet A Objet B Objet CObjet A1 Objet A2 Objet A3
  31. 31. Object Objet A Objet B Objet CObjet A1 Objet A2 Objet A3
  32. 32. Object Objet A Objet B Objet CObjet A1 Objet A2 Objet A3
  33. 33. statichéritage privé
  34. 34. var monObjet = { what : ConFoo, when : 2012, where : Montréal, sayHello : function () { console.log(Hello ConFoo 2012 !) ; }};
  35. 35. var monObjetBis = monObjet ;
  36. 36. FAUX
  37. 37. Vous avez copié une référence
  38. 38. var ObjetPere = function () { console.log(hello); };ObjetPere.prototype.na
  39. 39. var objet = { name:Dark Vador};var fils = Object.create(objet) ;
  40. 40. Privé
  41. 41. function Container () { var secret = 3; function dec () { return secret; } this.getSecret = function () { return dec(); }}var test = new Container() ;console.log( test.secret ) ; //undefinedconsole.log( test.getSecret() ) ; //3
  42. 42. Crédits PhotosDarin McClure : http://www.flickr.com/photos/darinrmcclureGeekphysical : http://www.flickr.com/photos/geekphysicalMarc Wathieu : http://www.flickr.com/photos/marcwathieuTheresa Thompson : http://www.flickr.com/photos/theresasthompsonEsparta Palma : http://www.flickr.com/photos/espartaMaria Reyes-McDavis : http://www.flickr.com/photos/mariareyesmcdavisDenis Vahrushev : http://www.flickr.com/photos/dvahrushevShadowgate : http://www.flickr.com/photos/shadowgateEschipul : http://www.flickr.com/photos/eschipulEleaf : http://www.flickr.com/photos/eleaf
  43. 43. https://joind.in/6084http://www.slideshare.net/mathrobin/poo -et-java-script-notion-trop-incomprise

×