JavaScript


Classes

Raconté par Arnaud de Mesmay sur la base d'un cours créé par Rémi Forax et Vincent Jugé.

Fonction vs Méthode

Un objet peut contenir des fonctions comme valeurs.
Une fonction dans un objet est appelée méthode.


this

Paramètre implicite qui contient l'objet sur lequel
on a appelé une méthode
(l'objet sur lequel on utilise l'opérateur '.').


this et appel de fonction

Que vaut this si on l'appelle comme une fonction ?


isAdult ne prend pas d'argument et this vaut undefined !

This is bullshit!

Partage de méthodes

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 !  

Les Classes

Définition d'une classe

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.

Le mot-clé New

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.

Création d'objets

Deux syntaxes !

Avec les accolades :
si on n'a que des valeurs, ou un seul objet ;
Avec new :
si on a plusieurs objets avec des méthodes.

Héritage (1/2)

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.


Héritage (2/2)

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.


La notation "class"
et l'héritage…


permettent de regrouper dans un même endroit l'initialisation et la manipulation d'un type nommé.
 
existent déjà dans plusieurs autres languages
(C++, Java, Swift, Rust) et sont donc mieux comprises que la notion de délégation propre à JavaScript.

Classes prédéfinies

Classe prédéfinie : tableau

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.

Classe prédéfinie : function

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.