Programmation Web, année 2019

Rappel sur la programmation objet.

Élément de syntaxe

Un objet en JavaScript ressemble beaucoup à un dictionnaire python.

var obj = { "clef" : "valeur" }
console.log(obj.clef); // accède à la valeur.
console.log(obj["clef"]); // accède à la valeur.

Méthode vs Fonctions

Une méthode c’est une fonction qui est dépendante d’une instance d’un objet.

Exemple:

obj.clef = 3;
obj.ma_method = function (){
    console.log(this.clef); // Le mot clef "this" représente l'instance de l'objet
}
obj.ma_method(); // affiche 3 dans la console
obj.clef = ';
obj.ma_method(); // affiche 4 dans la console.

La portée de this

Le mot clef this réfère à l’objet qui appel la fonction. Les fonctions non appelés par un objet sont appelé par l’objet window.

function A(){
  obj = {"x":3};
  obj.B = function(){
    obj2 = {"x":4};
        obj2.C = function(){
            console.log(this.x);
    };
    return obj2}
  return obj
}
Poulet = A()
Basquaise = Poulet.B()
Basquaise.C() # Affiche 4
Poulet.C = Basquaise.C
Poulet.C() # Affiche 3

Assigner localement this à une variable pour le récupérer dans une sous-fonction peut être très utile.


obj = {}
obj.ma_fonction(){
    // this réfère à obj.
    function Pouet()
    {
        console.log(this);// this réfère à Window
    }
    var that = this;
    function PouetPouet()
    {
        console.log(that);// that réfère à obj
    }
}