POO et JavaScript     UNE NOTION TROP INCOMPRISEMathieu ROBIN
« The Worlds Most Misunderstood Programming                  Language »                          Douglas Crockford
• Mathieu ROBIN (@mathrobin)           • 25 ans           • Ingénieur logiciel chez Companeo           • Contributeur Deve...
Classe                     Interface                  ClasseObjet                              Objet          Objet       ...
Classe                     Interface                  ClasseObjet                              Objet          Objet       ...
Objet
Number String ArrayFunction Object Date
Exceptions
undefined   null  NaN infinity
Tout objet a un  prototype
Tout objet peut servir deprototype à un autre objet
Object est le pèrede tous les objets
Object.prototype ---> null
Bravo !
var objetNu = new Object();
objetNu: Object  prototype: Object    constructor: function Object()    hasOwnProperty()    isPrototypeOf()    propertyIsE...
var monLitteral = {};
var monLitteral = [];
var monLitteral = {     what : ConFoo,     when : 2012,     where : Montréal,     why : 42,     and-for : speaking};
    Pas besoin de  ou de  pour les clés    Vous pouvez les utiliser quand même    Exception : foo-bar                P...
Accès aux propriétés :  console.log(monLitteral.what); // ConFoo  console.log(monLitteral[when]); // 2012  console.log(mon...
Modification des propriétés :  monLitteral.what = Confoo ;  monLitteral[when] = Février-Mars 2012 ;  monLitteral.who = Joh...
Suppression dune propriété :  monLitteral.what = null ;  monLitteral.when = undefined ;  delete monLitteral.who ;
var monObjet = {     what : ConFoo,     when : 2012,     where : Montréal};monObjet.sayHello = function () {     console.l...
var sayHello = function () {   console.log(Hello ConFoo !) ;}function sayHello () {   console.log(Hello ConFoo !) ;}
if ( true ) {    function sayHello () {       console.log(Hello ConFoo !) ;    }}else {    function sayHello () {       co...
Tout objet a un  prototype
monObjet.prototype.name = John Doe ;monObjet.prototype.getName = function () {    return this.name ;}
Object             Objet A      Objet B   Objet CObjet A1   Objet A2    Objet A3
Object             Objet A      Objet B   Objet CObjet A1   Objet A2    Objet A3
Object             Objet A      Objet B   Objet CObjet A1   Objet A2    Objet A3
Object             Objet A      Objet B   Objet CObjet A1   Objet A2    Objet A3
statichéritage privé
var monObjet = {     what : ConFoo,     when : 2012,     where : Montréal,     sayHello : function () {           console....
var monObjetBis = monObjet ;
FAUX
Vous avez copié une référence
var ObjetPere = function () {    console.log(hello); };ObjetPere.prototype.na
var objet = {     name:Dark Vador};var fils = Object.create(objet) ;
Privé
function Container () {  var secret = 3;  function dec () {     return secret;  }  this.getSecret = function () {     retu...
Crédits PhotosDarin McClure : http://www.flickr.com/photos/darinrmcclureGeekphysical : http://www.flickr.com/photos/geekph...
https://joind.in/6084http://www.slideshare.net/mathrobin/poo  -et-java-script-notion-trop-incomprise
Poo et JavaScript, une notion trop incomprise
Poo et JavaScript, une notion trop incomprise
Poo et JavaScript, une notion trop incomprise
Poo et JavaScript, une notion trop incomprise
Poo et JavaScript, une notion trop incomprise
Poo et JavaScript, une notion trop incomprise
Poo et JavaScript, une notion trop incomprise
Poo et JavaScript, une notion trop incomprise
Upcoming SlideShare
Loading in...5
×

Poo et JavaScript, une notion trop incomprise

4,554

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
4,554
On Slideshare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
55
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
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×