| [ Web Proxy ] |
| Viewing: https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Functions/Method_definitions | [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 septembre 2015.
Avec ECMAScript 2015 (ES6), il est possible d'utiliser une notation plus courte pour dfinir des mthodes au sein des littraux objets. On peut ainsi dfinir plus rapidement une fonction qui sera utilise comme mthode.
const obj = {
foo() {
return "bar";
},
};
console.log(obj.foo());
// Expected output: "bar"
var obj = {
property( parameters ) {},
*generator( parameters ) {},
async property( parameters ) {},
async* generator( parameters ) {},
// avec les noms calculs :
[property]( parameters ) {},
*[generator]( parameters ) {},
async [property]( parameters ) {},
// avec la syntaxe pour les accesseurs
// mutateurs :
get property() {},
set property(value) {}
};
La notation raccourcie est semblable la syntaxe introduite par ECMAScript 5 pour les accesseurs et mutateurs.
Le code suivant :
var obj = {
toto: function () {
/* du code */
},
truc: function () {
/* du code */
},
};
Peut dsormais tre raccourci en :
var obj = {
toto() {
/* du code */
},
truc() {
/* du code */
},
};
Les gnrateurs sont des mthodes et peuvent donc tre dfinis en utilisant la notation raccourci. Lorsqu'on les utilise :
* g(){} fonctionnera mais g*(){} ne fonctionnera pas.yield. Cela signifie que l'ancienne syntaxe pour les gnrateurs ne fonctionnera pas et dclenchera une exception SyntaxError. Il faut toujours utiliser yield avec l'astrisque (*).// Notation utilisant une proprit nomme (avant-ES2015)
var obj2 = {
g: function* () {
var index = 0;
while (true) yield index++;
},
};
// La mme dfinition, en utilisant la notation raccourcie
var obj2 = {
*g() {
var index = 0;
while (true) yield index++;
},
};
var it = obj2.g();
console.log(it.next().value); // 0
console.log(it.next().value); // 1
Les mthodes asynchrones peuvent galement tre dfinies grce une syntaxe raccourcie.
// On utilise une proprit nomme
var obj3 = {
f: async function () {
await une_promesse;
},
};
// Ici, on obtient le mme rsultat
// avec la notation raccourcie
var obj3 = {
async f() {
await une_promesse;
},
};
Les mthodes gnratrices peuvent galement tre asynchrones (cf. async) :
var obj4 = {
f: async function* () {
yield 1;
yield 2;
yield 3;
},
};
// Le code quivalent avec la
// notation raccourcie
var obj4 = {
async *f() {
yield 1;
yield 2;
yield 3;
},
};
Les dfinitions de mthodes ne sont pas des constructeurs et si on tente de les instancier, cela provoquera une exception TypeError.
var obj = {
mthode() {},
};
new obj.mthode(); // TypeError: obj.mthode is not a constructor
var obj = {
*g() {},
};
new obj.g(); // TypeError: obj.g is not a constructuer (chang avec ES2016)
var obj = {
a: "toto",
b() {
return this.a;
},
};
console.log(obj.b()); // "toto"
Cette notation raccourcie peut galement tre utilise avec des noms de proprits calculs.
var bar = {
toto0: function () {
return 0;
},
toto1() {
return 1;
},
["toto" + 2]() {
return 2;
},
};
console.log(bar.toto0()); // 0
console.log(bar.toto1()); // 1
console.log(bar.toto2()); // 2
| Spcification |
|---|
| ECMAScript 2027 LanguageSpecification # sec-method-definitions |
Cette page a t modifie le 17 fvr. 2025 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 |