MDN may have intermittent access issues April 18 13:00 - April 19 01:00 UTC. See whistlepig.mozilla.org for all notifications.

mozilla
Vos résultats de recherche

    L'opérateur get

    La syntaxe get permet de lier une propriété d'un objet à une fonction qui sera appelée lorsqu'on accédera à la propriété.

    Syntaxe

    {get prop() { ... } }
    {get [expression]() { ... } }

    Paramètre

    prop
    Le nom de la propriété à lier à la fonction.
    expression
    Avec ECMAScript 6, il est également possible d'utiliser des expressions renvoyant un nom de propriété calculé pour le lier à une fonction.

    Description

    Il est parfois utile de créer une propriété qui renvoie une valeur dynamique calculée, ou de ne pas avoir recours à l'appel explicite d'une méthode pour renvoyer le statut d'une variable interne. En JavaScript, il est possible de faire cela en utilisant un accesseur. Il n'est pas possible d'avoir simultanément un accesseur  assimilé à une propriété et d'avoir cette propriété initialisée à une valeur, mais il est possible d'utiliser un accesseur et un mutateur pour créer une sorte de pseudo-propriété.

    On notera que l'opérateur get :

    Un accesseur peut être supprimé grâce à l'opérateur delete.

    Exemples

    Définir un accesseur avec l'opérateur get

    Ce code va créer une pseudo-propriété dernier de l'objet o qui va retourner la dernière entrée du tableau o.journal :

    var o = {
      get dernier() {
        if (this.journal.length > 0) {
          return this.journal[this.journal.length - 1];
        }
        else {
          return null;
        }
      },
      journal: []
    }
    

    Notez qu'essayer d'assigner à dernier une valeur ne le modifiera pas.

    Supprimer un accesseur avec l'opérateur delete

    delete o.dernier;
    

    Définir un accesseur sur des objets existants grâce à defineProperty

    Afin d'ajouter un accesseur à un objet qui existe déjà, on peut utiliser la méthode Object.defineProperty().

    var o = { a:0 }
    
    Object.defineProperty(o, "b", { get: function () { return this.a + 1; } });
    
    console.log(o.b) // Utilise l'accesseur qui génère a + 1 (qui correspond à 1)

    Utiliser un nom de propriété calculé

    Note : Les noms de propriétés calculés font partie d'ECMASript 6, à ce titre, ils sont considérés comme expérimentaux et ne sont pas nécessairement supportés largement par les navigateurs. Le code qui suit entraînera une erreur de syntaxe avec les environnements incompatibles.

    var expr = "toto";
    
    var obj = {
      get [expr]() { return "truc"; }
    };
    
    console.log(obj.toto); // "truc"

    Spécifications

    Spécification Statut Commentaires
    ECMAScript 5.1 (ECMA-262)
    La définition de 'Object Initializer' dans cette spécification.
    Standard Définition initiale
    ECMAScript 6 (ECMA-262)
    La définition de 'Method definitions' dans cette spécification.
    En cours de validation comme recommandation Ajout des noms de propriétés calculés.

    Compatibilité des navigateurs

    Ce tableau est basé sur la page de Robert Nyman. Si le navigateur ne supporte pas cette technologie (notamment IE6-8), cela signifie que le script provoquera une erreur de syntaxe.

    Fonctionnalité Chrome Firefox (Gecko) Internet Explorer Opera Safari
    Support simple 1 2.0 (1.8.1) 9 9.5 3
    Noms de propriétés calculés Pas de support 34 (34) Pas de support Pas de support Pas de support
    Fonctionnalité Android Chrome pour Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
    Support simple (Oui) (Oui) 1.0 (1.8.1) (Oui) (Oui) (Oui)
    Noms de propriétés calculs Pas de support Pas de support 34.0 (34.0) Pas de support Pas de support Pas de support

    Voir aussi

    Étiquettes et contributeurs liés au document

    Contributors to this page: fscholz, SphinxKnight, MattouFP, Jeremie, teoli, BenoitL, titouandk
    Dernière mise à jour par : SphinxKnight,
    Masquer la barre latérale