Mozilla's getting a new look. What do you think? https://mzl.la/brandsurvey

Object.prototype.__defineGetter__()

Attention : Cette fonctionnalité est dépréciée et il est préférable d'utiliser l'API Object.defineProperty() et la syntaxe d'initialisation d'objets. Toutefois, __defineGetter__ est largement utilisée sur le Web et est implémentée. Il est donc peu probable que les navigateurs retirent cette méthode.

La méthode __defineGetter__ permet de lier une propriété d'un objet à une fonction à exécuter lorsqu'on accède à la propriété.

Syntaxe

obj.__defineGetter__(prop, func)

Paramètres

prop
Une chaîne de caractères contenant le nom de la propriété à lier à la fonction donnée.
func
Une fonction à utiliser à chaque fois qu'on accède à la propriété.

Valeur de retour

undefined.

Description

La méthode __defineGetter__ permet de définir un accesseur sur un objet pré-existant.

Exemples

// Méthode non-standard et dépréciée

var o = {};
o.__defineGetter__('gimmeFive', function() { return 5; });
console.log(o.gimmeFive); // 5


// Façon standard

// En utilisant l'opérateur get
var o = { get gimmeFive() { return 5; } };
console.log(o.gimmeFive); // 5

// En utilisant Object.defineProperty
var o = {};
Object.defineProperty(o, 'gimmeFive', {
  get: function() {
    return 5;
  }
});
console.log(o.gimmeFive); // 5

Spécifications

Spécification État Commentaires
ECMAScript 2017 Draft (ECMA-262)
La définition de 'Object.prototype.__defineGetter__()' dans cette spécification.
Projet Incluse dans l'annexe normative pour les fonctionnalités historiques liées aux navigateurs web (la spécification codifie ce qui est déjà présent dans les différentes implémentations).

Compatibilité des navigateurs

Fonctionnalité Chrome Firefox (Gecko) Internet Explorer Opera Safari
Support simple (Oui) (Oui) 11 (Oui) (Oui)
Fonctionnalité Android Chrome pour Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
Support simple (Oui) (Oui) (Oui) ? (Oui) (Oui)

Notes de compatibilité

  • À partir de Firefox 48 (Firefox 48 / Thunderbird 48 / SeaMonkey 2.45), cette méthode ne peut plus être appelée dans la portée globale sans être rattachée à aucun objet, sinon, elle lèvera une exception TypeError. Avant, l'objet global était utilisé automatiquement mais ce n'est désormais plus le cas (cf. bug 1253016).

Voir aussi

Étiquettes et contributeurs liés au document

 Contributeurs à cette page : SphinxKnight, teoli, Jeremie, matteodelabre, BenoitL
 Dernière mise à jour par : SphinxKnight,