JavaScript avancé : classes, modules et syntaxe moderne

Le prototype et la chaîne de prototypes, class, extends et super, les modules avec import et export, la déstructuration, la décomposition et le chaînage optionnel.

  • 35 cartes
  • 6 thèmes
  • Gratuit

Le programme, thème par thème

Le poids de chaque thème suit celui que lui donne l'examen.

  1. Notions
  2. Questions
  3. Ranger et relier
  4. Les étapes
  5. Mises en situation
  6. Comprendre

Quelques cartes du deck

  • Prototype : de quoi s'agit-il ?

    Voir la réponse

    Objet auquel un autre objet délègue : quand une propriété manque sur le premier, le moteur la cherche sur celui-là.

    Les méthodes d'une classe vivent une seule fois sur son prototype ; les instances n'en portent pas de copie.

  • Que valent reste, t et v à la fin ?

    ```js
    const { a, ...reste } = { a: 1, b: 2, c: 3 };
    const t = [...[1, 2], 3];
    let u;
    const v = u?.x ?? "rien";
    `

    • { b: 2, c: 3 }, [1, 2, 3], "rien"
    • { a: 1, b: 2, c: 3 }, [[1, 2], 3], undefined
    • { b: 2, c: 3 }, [[1, 2], 3], "rien"
    • [2, 3], [1, 2, 3], TypeError
    Voir la réponse

    { b: 2, c: 3 }, [1, 2, 3], "rien"

    Le reste rassemble les propriétés non extraites (a est exclu). L'étalement ... pose les éléments à plat. u?.x s'arrête à undefined au lieu de lever une erreur, et ?? donne alors la valeur de repli.

  • Pour importer un export nommé, on écrit son nom entre … ; pour l'export par défaut, on les omet et on choisit le nom.

    Voir la réponse

    Pour importer un export nommé, on écrit son nom entre accolades ; pour l'export par défaut, on les omet et on choisit le nom.

    Oublier les accolades importe l'export par défaut ; en mettre sur un nom qui n'est pas exporté donne un SyntaxError avant toute exécution.

  • Chaîne de prototypes : de quoi s'agit-il ?

    Voir la réponse

    Suite d'objets parcourue d'un prototype au suivant, jusqu'à trouver la propriété ou atteindre null.

    Si rien n'est trouvé au bout, la lecture donne undefined ; l'appel d'une méthode manquante, lui, lève TypeError: … is not a function.

  • La recherche de rex.parler() sur la chaîne de prototypes : quelle étape vient après « Le moteur cherche parler sur l'objet rex lui-même » ?

    • Absente aussi : il passe à Animal.prototype
    • Il y trouve parler et l'appelle avec this égal à rex
    • Absente : il passe au prototype de rex, Chien.prototype
    • Sans résultat, il aurait atteint Object.prototype puis null
    Voir la réponse

    Absente : il passe au prototype de rex, Chien.prototype

    La recherche monte d'un maillon à la fois et s'arrête à la première propriété trouvée ; le this reste l'objet de départ, rex, même si la méthode vient d'un prototype.