Object.prototype.__defineSetter__()

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 __defineSetter__ permet de lier une propriété d'un objet à une fonction qui sera exécutée pour toute tentative de définition/changement de cette propriété.

Syntaxe

obj.__defineSetter__(prop, fun)

Paramètres

prop
Une chaîne de caractères qui contient le nom de la propriété qu'on souhaite lier à la fonction.
fun
Une fonction à appeler pour chaque modification de la propriété. Cette fonction prend la forme suivante :
function(val) { . . . }
val
Un alias pour la variable contenant la nouvelle valeur qu'on souhaite affecter à prop.

Valeur de retour

undefined.

Description

La méthode __defineSetter__ permet de définir un mutateur sur un objet pré-existant.

Exemples

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

var o = {};
o.__defineSetter__('valeur', function(val) { this.uneAutreValeur = val; });
o.valeur = 5;
console.log(o.valeur); // undefined
console.log(o.uneAutreValeur); // 5


// Façons standard

// En utilisant l'opérateur set
var o = { set valeur(val) { this.uneAutreValeur = val; } };
o.valeur = 5;
console.log(o.valeur); // undefined
console.log(o.uneAutreValeur); // 5

// En utilisant Object.defineProperty
var o = {};
Object.defineProperty(o, 'valeur', {
  set: function(val) {
    this.uneAutreValeur = val;
  }
});
o.valeur = 5;
console.log(o.valeur); // undefined
console.log(o.uneAutreValeur); // 5

Spécifications

Spécification État Commentaires
ECMAScript (ECMA-262)
La définition de 'Object.prototype.__defineSetter__()' dans cette spécification.
Standard évolutif 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

BCD tables only load in the browser

Voir aussi