Raconté par Arnaud de Mesmay sur la base d'un cours créé par Rémi Forax et Vincent Jugé.
Un objet peut contenir des fonctions comme valeurs.
Une fonction dans un objet est appelée méthode.
Paramètre implicite qui contient l'objet sur lequel
on a appelé une méthode
(l'objet sur lequel on utilise l'opérateur '.').
Que vaut this si on l'appelle comme une fonction ?
isAdult ne prend pas d'argument et this vaut undefined !
Si on a deux objets, il faut définir surface deux fois,
même si c'est le même code !?
Ça paraît idiot !
Une classe définit un modèle de création d'objets.
Une classe contient des méthodes (fonctions qui agissent sur this) et un constructeur (méthode d'initialisation).
Par convention, le nom des classes commence toujours par une majuscule.
new permet de créer et d'initialiser des objets qui seront munis des méthodes listés dans une classe.
new Square crée un objet, initialise celui-ci avec la fonction constructor de la classe Square, et le munit de toutes les méthodes définies dans la classe Square.
Deux syntaxes !
Une classe B peut représenter un sous-ensemble (extends) d'une classe A : ses membres ont des capacités étendues.
Pour créer un B, on commence par créer un A grâce au mot-clé super.
On peut ajouter des fonctions
et réécrire les fonctions de la classe mère.
Le mot-clé super permet d'invoquer une fonction
de la classe mère
quand on a réécrit une fonction de même nom.
Pour JavaScript, un tableau (array) est un objet ;
length est une propriété des objets tableaux.
Le mot-clé new permet de créer un objet.
Pour JavaScript, une fonction (function) est un objet ;
name
ou length sont des propriétés des objets fonctions.
length renvoie le nombre de paramètres de la fonction.