Poo et JavaScript, une notion trop incomprise
-
Upload
mathieu-robin -
Category
Technology
-
view
4.473 -
download
0
description
Transcript of Poo et JavaScript, une notion trop incomprise
![Page 1: Poo et JavaScript, une notion trop incomprise](https://reader035.fdocument.pub/reader035/viewer/2022070316/5560b1d6d8b42afe3b8b4673/html5/thumbnails/1.jpg)
POO et JavaScriptUNE NOTION TROP INCOMPRISE
Mathieu ROBIN
![Page 2: Poo et JavaScript, une notion trop incomprise](https://reader035.fdocument.pub/reader035/viewer/2022070316/5560b1d6d8b42afe3b8b4673/html5/thumbnails/2.jpg)
« The World's Most Misunderstood Programming Language »
Douglas Crockford
![Page 3: Poo et JavaScript, une notion trop incomprise](https://reader035.fdocument.pub/reader035/viewer/2022070316/5560b1d6d8b42afe3b8b4673/html5/thumbnails/3.jpg)
• 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
![Page 4: Poo et JavaScript, une notion trop incomprise](https://reader035.fdocument.pub/reader035/viewer/2022070316/5560b1d6d8b42afe3b8b4673/html5/thumbnails/4.jpg)
![Page 5: Poo et JavaScript, une notion trop incomprise](https://reader035.fdocument.pub/reader035/viewer/2022070316/5560b1d6d8b42afe3b8b4673/html5/thumbnails/5.jpg)
Classe
Classe
Objet
Objet
Objet
Objet
Interface
![Page 6: Poo et JavaScript, une notion trop incomprise](https://reader035.fdocument.pub/reader035/viewer/2022070316/5560b1d6d8b42afe3b8b4673/html5/thumbnails/6.jpg)
![Page 7: Poo et JavaScript, une notion trop incomprise](https://reader035.fdocument.pub/reader035/viewer/2022070316/5560b1d6d8b42afe3b8b4673/html5/thumbnails/7.jpg)
Classe
Classe
Objet
Objet
Objet
Objet
Interface
![Page 8: Poo et JavaScript, une notion trop incomprise](https://reader035.fdocument.pub/reader035/viewer/2022070316/5560b1d6d8b42afe3b8b4673/html5/thumbnails/8.jpg)
Objet
![Page 9: Poo et JavaScript, une notion trop incomprise](https://reader035.fdocument.pub/reader035/viewer/2022070316/5560b1d6d8b42afe3b8b4673/html5/thumbnails/9.jpg)
NumberStringArray
FunctionObjectDate
Boolean
![Page 10: Poo et JavaScript, une notion trop incomprise](https://reader035.fdocument.pub/reader035/viewer/2022070316/5560b1d6d8b42afe3b8b4673/html5/thumbnails/10.jpg)
Exceptions
![Page 11: Poo et JavaScript, une notion trop incomprise](https://reader035.fdocument.pub/reader035/viewer/2022070316/5560b1d6d8b42afe3b8b4673/html5/thumbnails/11.jpg)
undefinednullNaN
infinity
![Page 12: Poo et JavaScript, une notion trop incomprise](https://reader035.fdocument.pub/reader035/viewer/2022070316/5560b1d6d8b42afe3b8b4673/html5/thumbnails/12.jpg)
Tout objet a un prototype
![Page 13: Poo et JavaScript, une notion trop incomprise](https://reader035.fdocument.pub/reader035/viewer/2022070316/5560b1d6d8b42afe3b8b4673/html5/thumbnails/13.jpg)
Tout objet peut servir de prototype à un autre objet
![Page 14: Poo et JavaScript, une notion trop incomprise](https://reader035.fdocument.pub/reader035/viewer/2022070316/5560b1d6d8b42afe3b8b4673/html5/thumbnails/14.jpg)
Object est le pèrede tous les objets
![Page 15: Poo et JavaScript, une notion trop incomprise](https://reader035.fdocument.pub/reader035/viewer/2022070316/5560b1d6d8b42afe3b8b4673/html5/thumbnails/15.jpg)
Object.prototype ---> null
![Page 16: Poo et JavaScript, une notion trop incomprise](https://reader035.fdocument.pub/reader035/viewer/2022070316/5560b1d6d8b42afe3b8b4673/html5/thumbnails/16.jpg)
Bravo !
![Page 17: Poo et JavaScript, une notion trop incomprise](https://reader035.fdocument.pub/reader035/viewer/2022070316/5560b1d6d8b42afe3b8b4673/html5/thumbnails/17.jpg)
![Page 18: Poo et JavaScript, une notion trop incomprise](https://reader035.fdocument.pub/reader035/viewer/2022070316/5560b1d6d8b42afe3b8b4673/html5/thumbnails/18.jpg)
var objetNu = new Object();
![Page 19: Poo et JavaScript, une notion trop incomprise](https://reader035.fdocument.pub/reader035/viewer/2022070316/5560b1d6d8b42afe3b8b4673/html5/thumbnails/19.jpg)
objetNu: Objectprototype: Object
constructor: function Object()hasOwnProperty()isPrototypeOf()propertyIsEnumerable()toLocaleString()toString()valueOf()
![Page 20: Poo et JavaScript, une notion trop incomprise](https://reader035.fdocument.pub/reader035/viewer/2022070316/5560b1d6d8b42afe3b8b4673/html5/thumbnails/20.jpg)
![Page 21: Poo et JavaScript, une notion trop incomprise](https://reader035.fdocument.pub/reader035/viewer/2022070316/5560b1d6d8b42afe3b8b4673/html5/thumbnails/21.jpg)
var monLitteral = {};
![Page 22: Poo et JavaScript, une notion trop incomprise](https://reader035.fdocument.pub/reader035/viewer/2022070316/5560b1d6d8b42afe3b8b4673/html5/thumbnails/22.jpg)
var monLitteral = [];
![Page 23: Poo et JavaScript, une notion trop incomprise](https://reader035.fdocument.pub/reader035/viewer/2022070316/5560b1d6d8b42afe3b8b4673/html5/thumbnails/23.jpg)
var monLitteral = {
what : 'ConFoo',
'when' : '2012',
where : 'Montréal',
why : 42,
''and-for'' : 'speaking'
};
![Page 24: Poo et JavaScript, une notion trop incomprise](https://reader035.fdocument.pub/reader035/viewer/2022070316/5560b1d6d8b42afe3b8b4673/html5/thumbnails/24.jpg)
Pas besoin de ' ou de '' pour les clés Vous pouvez les utiliser quand même Exception : ''foo-bar''
Présence d'un caractère « illégal » Utilisation d'un mot réservé
• Ne s'applique plus avec EcmaScript 5
![Page 25: Poo et JavaScript, une notion trop incomprise](https://reader035.fdocument.pub/reader035/viewer/2022070316/5560b1d6d8b42afe3b8b4673/html5/thumbnails/25.jpg)
Accès aux propriétés :
console.log(monLitteral.what); // ConFoo
console.log(monLitteral['when']); // 2012
console.log(monLitteral.who); // undefined
![Page 26: Poo et JavaScript, une notion trop incomprise](https://reader035.fdocument.pub/reader035/viewer/2022070316/5560b1d6d8b42afe3b8b4673/html5/thumbnails/26.jpg)
Modification des propriétés :
monLitteral.what = 'Confoo' ;
monLitteral['when'] = 'Février-Mars 2012' ;
monLitteral.who = 'John Doe' ;
![Page 27: Poo et JavaScript, une notion trop incomprise](https://reader035.fdocument.pub/reader035/viewer/2022070316/5560b1d6d8b42afe3b8b4673/html5/thumbnails/27.jpg)
Suppression d'une propriété :
monLitteral.what = null ;
monLitteral.when = undefined ;
delete monLitteral.who ;
![Page 28: Poo et JavaScript, une notion trop incomprise](https://reader035.fdocument.pub/reader035/viewer/2022070316/5560b1d6d8b42afe3b8b4673/html5/thumbnails/28.jpg)
![Page 29: Poo et JavaScript, une notion trop incomprise](https://reader035.fdocument.pub/reader035/viewer/2022070316/5560b1d6d8b42afe3b8b4673/html5/thumbnails/29.jpg)
![Page 30: Poo et JavaScript, une notion trop incomprise](https://reader035.fdocument.pub/reader035/viewer/2022070316/5560b1d6d8b42afe3b8b4673/html5/thumbnails/30.jpg)
var monObjet = {
what : 'ConFoo',
when : '2012',
where : 'Montréal'
};
monObjet.sayHello = function () {
console.log('Hello ConFoo 2012 !') ;
}
![Page 31: Poo et JavaScript, une notion trop incomprise](https://reader035.fdocument.pub/reader035/viewer/2022070316/5560b1d6d8b42afe3b8b4673/html5/thumbnails/31.jpg)
var sayHello = function () {
console.log('Hello ConFoo !') ;
}
function sayHello () {
console.log('Hello ConFoo !') ;
}
![Page 32: Poo et JavaScript, une notion trop incomprise](https://reader035.fdocument.pub/reader035/viewer/2022070316/5560b1d6d8b42afe3b8b4673/html5/thumbnails/32.jpg)
if ( true ) {
function sayHello () {
console.log('Hello ConFoo !') ;
}
}
else {
function sayHello () {
console.log('Hello world !') ;
}
}
sayHello() ; // Hello world !
![Page 33: Poo et JavaScript, une notion trop incomprise](https://reader035.fdocument.pub/reader035/viewer/2022070316/5560b1d6d8b42afe3b8b4673/html5/thumbnails/33.jpg)
![Page 34: Poo et JavaScript, une notion trop incomprise](https://reader035.fdocument.pub/reader035/viewer/2022070316/5560b1d6d8b42afe3b8b4673/html5/thumbnails/34.jpg)
Tout objet a un prototype
![Page 35: Poo et JavaScript, une notion trop incomprise](https://reader035.fdocument.pub/reader035/viewer/2022070316/5560b1d6d8b42afe3b8b4673/html5/thumbnails/35.jpg)
monObjet.prototype.name = 'John Doe' ;
monObjet.prototype.getName = function () {
return this.name ;
}
![Page 36: Poo et JavaScript, une notion trop incomprise](https://reader035.fdocument.pub/reader035/viewer/2022070316/5560b1d6d8b42afe3b8b4673/html5/thumbnails/36.jpg)
Object
Objet A Objet CObjet B
Objet A1 Objet A2 Objet A3
![Page 37: Poo et JavaScript, une notion trop incomprise](https://reader035.fdocument.pub/reader035/viewer/2022070316/5560b1d6d8b42afe3b8b4673/html5/thumbnails/37.jpg)
Object
Objet A Objet CObjet B
Objet A1 Objet A2 Objet A3
![Page 38: Poo et JavaScript, une notion trop incomprise](https://reader035.fdocument.pub/reader035/viewer/2022070316/5560b1d6d8b42afe3b8b4673/html5/thumbnails/38.jpg)
Object
Objet A Objet CObjet B
Objet A1 Objet A2 Objet A3
![Page 39: Poo et JavaScript, une notion trop incomprise](https://reader035.fdocument.pub/reader035/viewer/2022070316/5560b1d6d8b42afe3b8b4673/html5/thumbnails/39.jpg)
Object
Objet A Objet CObjet B
Objet A1 Objet A2 Objet A3
![Page 40: Poo et JavaScript, une notion trop incomprise](https://reader035.fdocument.pub/reader035/viewer/2022070316/5560b1d6d8b42afe3b8b4673/html5/thumbnails/40.jpg)
static
héritage
privé
![Page 41: Poo et JavaScript, une notion trop incomprise](https://reader035.fdocument.pub/reader035/viewer/2022070316/5560b1d6d8b42afe3b8b4673/html5/thumbnails/41.jpg)
var monObjet = {
what : 'ConFoo',
when : '2012',
where : 'Montréal',
sayHello : function () {
console.log('Hello ConFoo 2012 !') ;
}
};
![Page 42: Poo et JavaScript, une notion trop incomprise](https://reader035.fdocument.pub/reader035/viewer/2022070316/5560b1d6d8b42afe3b8b4673/html5/thumbnails/42.jpg)
var monObjetBis = monObjet ;
![Page 43: Poo et JavaScript, une notion trop incomprise](https://reader035.fdocument.pub/reader035/viewer/2022070316/5560b1d6d8b42afe3b8b4673/html5/thumbnails/43.jpg)
FAUX
![Page 44: Poo et JavaScript, une notion trop incomprise](https://reader035.fdocument.pub/reader035/viewer/2022070316/5560b1d6d8b42afe3b8b4673/html5/thumbnails/44.jpg)
Vous avez copié une référence
![Page 45: Poo et JavaScript, une notion trop incomprise](https://reader035.fdocument.pub/reader035/viewer/2022070316/5560b1d6d8b42afe3b8b4673/html5/thumbnails/45.jpg)
var ObjetPere = function () {console.log('hello');
} ;
ObjetPere.prototype.name = 'Dark Vador' ;
var objetReel = new ObjetPere();
![Page 46: Poo et JavaScript, une notion trop incomprise](https://reader035.fdocument.pub/reader035/viewer/2022070316/5560b1d6d8b42afe3b8b4673/html5/thumbnails/46.jpg)
var objet = {name:'Dark Vador'
} ;var fils = Object.create(objet) ;
![Page 47: Poo et JavaScript, une notion trop incomprise](https://reader035.fdocument.pub/reader035/viewer/2022070316/5560b1d6d8b42afe3b8b4673/html5/thumbnails/47.jpg)
Privé
![Page 48: Poo et JavaScript, une notion trop incomprise](https://reader035.fdocument.pub/reader035/viewer/2022070316/5560b1d6d8b42afe3b8b4673/html5/thumbnails/48.jpg)
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
![Page 49: Poo et JavaScript, une notion trop incomprise](https://reader035.fdocument.pub/reader035/viewer/2022070316/5560b1d6d8b42afe3b8b4673/html5/thumbnails/49.jpg)
Crédits PhotosDarin McClure : http://www.flickr.com/photos/darinrmcclure
Geekphysical : http://www.flickr.com/photos/geekphysical
Marc Wathieu : http://www.flickr.com/photos/marcwathieu
Theresa Thompson : http://www.flickr.com/photos/theresasthompson
Esparta Palma : http://www.flickr.com/photos/esparta
Maria Reyes-McDavis : http://www.flickr.com/photos/mariareyesmcdavis
Denis Vahrushev : http://www.flickr.com/photos/dvahrushev
Shadowgate : http://www.flickr.com/photos/shadowgate
Eschipul : http://www.flickr.com/photos/eschipul
Eleaf : http://www.flickr.com/photos/eleaf
![Page 50: Poo et JavaScript, une notion trop incomprise](https://reader035.fdocument.pub/reader035/viewer/2022070316/5560b1d6d8b42afe3b8b4673/html5/thumbnails/50.jpg)
https://joind.in/6084
http://www.slideshare.net/mathrobin/poo-et-java-script-notion-trop-incomprise
![Page 51: Poo et JavaScript, une notion trop incomprise](https://reader035.fdocument.pub/reader035/viewer/2022070316/5560b1d6d8b42afe3b8b4673/html5/thumbnails/51.jpg)