[ Web Proxy ]
URL:
Viewing: https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Global_Objects/Function/toString [Back]  [Original]

Function : mthode toString() - JavaScript | MDN

Cette page a t traduite partir de l'anglais par la communaut. Vous pouvez contribuer en rejoignant la communaut francophone sur MDN Web Docs.

View in English Always switch to English

Function : mthode toString()

Baseline Large disponibilit

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 mthode toString() des instances de Function retourne une chane de caractres reprsentant le code source de la fonction.

Dans cet article

Exemple interactif

function sum(a, b) {
  return a + b;
}

console.log(sum.toString());
// Rsultat attendu : "function sum(a, b) {
//                      return a + b;
//                    }"

console.log(Math.abs.toString());
// Rsultat attendu : "function abs() { [native code] }"

Syntaxe

js
toString()

Paramtres

Aucun.

Valeur de retour

Une chane de caractres qui reprsente le code source de la fonction.

Description

L'objet Function remplace la mthode toString() hrite de Object ; il n'hrite pas de Object.prototype.toString. Pour les objets Function dfinis par l'utilisateur, la mthode toString retourne une chane contenant le segment de texte source utilis pour dfinir la fonction.

JavaScript appelle automatiquement la mthode toString lorsqu'une Function doit tre reprsente comme une valeur textuelle, par exemple lorsqu'une fonction est concatne avec une chane.

La mthode toString() lvera une exception TypeError ("Function.prototype.toString called on incompatible object"), si l'objet this n'est pas un objet Function.

js
Function.prototype.toString.call("toto"); // throws TypeError

Si la mthode toString() est appele sur des objets fonction intgrs, une fonction cre par Function.prototype.bind(), ou d'autres fonctions non JavaScript, alors toString() retourne une chane de fonction native qui ressemble

function someName() { [native code] }

Pour les mthodes et fonctions des objets intrinsques, someName est le nom initial de la fonction ; sinon, son contenu peut tre dfini par l'implmentation, mais sera toujours dans la syntaxe du nom de proprit, comme [1 + 1], someName ou 1.

Note : Cela signifie que l'utilisation de eval() sur des chanes de fonctions natives est une erreur de syntaxe garantie.

Si la mthode toString() est appele sur une fonction cre par le constructeur Function, toString() retourne le code source d'une dclaration de fonction synthtise nomme "anonymous" en utilisant les paramtres et le corps de fonction fournis. Par exemple, Function("a", "b", "return a + b").toString() retournera :

function anonymous(a,b
) {
return a + b
}

Depuis ES2018, la spcification exige que la valeur de retour de toString() soit exactement le mme code source que celui utilis lors de la dclaration, y compris les espaces et/ou les commentaires ou, si l'hte n'a pas le code source disponible pour une raison quelconque, il doit retourner une chane de fonction native. La prise en charge de ce comportement rvis peut tre trouve dans le tableau de compatibilit.

Exemples

Comparer le code source rel et les rsultats de toString

js
function test(fn) {
  console.log(fn.toString());
}

function f() {}
class A {
  a() {}
}
function* g() {}

test(f); // "function f() {}"
test(A); // "class A { a() {} }"
test(g); // "function* g() {}"
test((a) => a); // "(a) => a"
test({ a() {} }.a); // "a() {}"
test({ *a() {} }.a); // "*a() {}"
test({ [0]() {} }[0]); // "[0]() {}"
test(Object.getOwnPropertyDescriptor({ get a() {} }, "a").get); // "get a() {}"
test(Object.getOwnPropertyDescriptor({ set a(x) {} }, "a").set); // "set a(x) {}"
test(Function.prototype.toString); // "function toString() { [native code] }"
test(function f() {}.bind(0)); // "function () { [native code] }"
test(Function("a", "b")); // function anonymous(a\n) {\nb\n}

Notez qu'aprs la rvision de Function.prototype.toString(), lorsque toString() est appel, les implmentations ne sont jamais autorises synthtiser le code source d'une fonction qui n'est pas une chane de fonction native. La mthode retourne toujours le code source exact utilis pour crer la fonction y compris les exemples d'accesseur et de mutateur ci-dessus. Le constructeur Function lui-mme a la capacit de synthtiser le code source de la fonction (et est donc une forme implicite de la mthode eval()).

Obtenir le texte source d'une fonction

Il est possible d'obtenir le texte source d'une fonction en la forant tre une chane de caractres par exemple, en l'enveloppant dans un littral de modle :

js
function toto() {
  return "truc";
}
console.log(`${toto}`);
// function toto() {
//   return "truc";
// }

Cette source est exacte, y compris les commentaires intercals (qui ne seront pas stocks par la reprsentation interne du moteur autrement).

js
function toto /* un commentaire */() {
  return "truc";
}
console.log(toto.toString());
// function toto /* un commentaire */() {
//   return "truc";
// }

Spcifications

Spcification
ECMAScript 2027 LanguageSpecification
# sec-function.prototype.tostring

Compatibilit des navigateurs

Voir aussi


Web Proxy Viewer  |  New URL  |  Original Page