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

js
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 :

js
function(val) { . . . }
val

Un alias pour la variable contenant la nouvelle valeur qu'on souhaite affecter à prop.

Valeur de retour

Description

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

Exemples

js
// 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

Specification
ECMAScript® 2025 Language Specification
# sec-object.prototype.__defineSetter__

Compatibilité des navigateurs

Report problems with this compatibility data on GitHub
desktopmobileserver
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
Deno
Node.js
__defineSetter__
Deprecated

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support
Deprecated. Not for use in new websites.
See implementation notes.

Voir aussi