| [ Web Proxy ] |
| Viewing: https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Functions/set | [Back] [Original] |
Get to know MDN better
Cette page a t traduite partir de l'anglais par la communaut. Vous pouvez contribuer en rejoignant la communaut francophone sur MDN Web Docs.
Cette fonctionnalit est bien tablie et fonctionne sur de nombreux appareils et versions de navigateurs. Elle est disponible sur tous les navigateurs depuis juillet 2015.
La syntaxe set permet de lier une proprit d'un objet une fonction qui sera appele chaque tentative de modification de cette proprit.
const language = {
set current(name) {
this.log.push(name);
},
log: [],
};
language.current = "EN";
language.current = "FA";
console.log(language.log);
// Expected output: Array ["EN", "FA"]
{set prop(val) { . . .}}
{set [expression](val) { . . .}}
propLe nom de la proprit lier la fonction.
valUn alias pour la variable qui contient la valeur qu'on souhaiterait affecter prop.
expressionAvec ECMAScript 2015, il est galement possible d'utiliser des expressions pour utiliser un nom de proprit calcul lier la fonction.
En JavaScript, un mutateur (ou setter en anglais) peut tre utiis afin d'excuter une fonction chaque fois qu'on souhaite modifier la valeur d'une proprit donne. La plupart du temps, les mutateurs sont utiliss avec les accesseurs (getters) afin de crer une pseudo-proprit. Il n'est pas possible d'avoir la fois un mutateur et une valeur donne pour une mme proprit.
On notera que set :
set ou une autre proprit avec la mme cl :
( { set x(v) { }, set x(v) { } } et { x: ..., set x(v) { } } seront interdits)On peut retirer un mutateur d'un objet grce l'oprateur delete.
Dans l'exemple qui suit, on dfinit une pseudo-proprit courant pour un objet o qui, lorsqu'elle recevra une valeur, mettra jour la proprit log avec la valeur reue :
var o = {
set courant(str) {
this.log[this.log.length] = str;
},
log: [],
};
On notera que courant n'est pas dfini. Toute tentative pour y accder renverra undefined.
deleteSi on souhaite retirer un mutateur, on peut simplement utiliser l'oprateur delete :
delete o.courant;
definePropertyOn peut galement ajouter un mutateur sur un objet d'ores et dj cr. Pour cela, on utilisera la mthode Object.defineProperty().
var o = { a: 0 };
Object.defineProperty(o, "b", {
set: function (x) {
this.a = x / 2;
},
});
o.b = 10; // On utilise le setter, qui affecte 10 / 2 (5) 'a'
console.log(o.a); // 5
var expr = "toto";
var obj = {
bidule: "truc",
set [expr](v) {
this.bidule = v;
},
};
console.log(obj.bidule); // "truc"
obj.toto = "bidule"; // le mutateur est utilis
console.log(obj.bidule); // "bidule"
| Spcification |
|---|
| ECMAScript 2027 LanguageSpecification # sec-method-definitions |
getdeleteObject.defineProperty()Object.prototype.__defineGetter__()Object.prototype.__defineSetter__()Cette page a t modifie le 22 mai 2026 par les contributeurices du MDN.
Certaines parties de ce contenu sont protges par le droit d'auteur 19982026 des contributeurs individuels de mozilla.org. Contenu disponible sous une licence Creative Commons.
| Web Proxy Viewer | New URL | Original Page |