Function
Baseline
Widely available
*
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.
* Certaines parties de cette fonctionnalité peuvent bénéficier de prise en charge variables.
L'objet Function fournit des méthodes pour les fonctions. En JavaScript, chaque fonction est en réalité un objet Function.
Constructeur
Function()-
Crée un nouvel objet
Function. Appeler le constructeur directement permet de créer des fonctions dynamiquement, mais cela présente des problèmes de sécurité et de performances similaires (mais bien moindres) àeval(). Cependant, contrairement àeval(), le constructeurFunctioncrée des fonctions qui s'exécutent uniquement dans la portée globale.
Propriétés d'instance
Ces propriétés sont définies sur Function.prototype et partagées par toutes les instances de Function.
Function.prototype.argumentsObsolète Non standard-
Représente les arguments passés à cette fonction. Pour les fonctions strictes, fléchées, asynchrones et génératrices, accéder à la propriété
argumentsdéclenche uneTypeError. Utilisez plutôt l'objetargumentsà l'intérieur des fermetures de fonction. Function.prototype.callerObsolète Non standard-
Représente la fonction qui a appelé cette fonction. Pour les fonctions strictes, fléchées, asynchrones et génératrices, accéder à la propriété
callerdéclenche une erreur de typage (TypeError). Function.prototype.constructor-
La fonction constructeur qui a créé l'objet instance. Pour les instances de
Function, la valeur initiale est le constructeurFunction.
Ces propriétés sont propres à chaque instance de Function.
displayNameNon standard Facultatif-
Le nom d'affichage de la fonction.
length-
Indique le nombre d'arguments attendus par la fonction.
name-
Le nom de la fonction.
prototype-
Utilisé lorsque la fonction est utilisée comme constructeur avec l'opérateur
new. Cela deviendra le prototype du nouvel objet.
Méthodes d'instance
Function.prototype.apply()-
Appelle une fonction avec une valeur
thisdonnée et des arguments optionnels fournis sous forme de tableau (ou d'objet semblable à un tableau). Function.prototype.bind()-
Crée une nouvelle fonction qui, lorsqu'elle est appelée, a son mot-clé
thisfixé à une valeur donnée, éventuellement avec une séquence d'arguments précédant ceux fournis lors de l'appel de la nouvelle fonction. Function.prototype.call()-
Appelle une fonction avec une valeur
thisdonnée et des arguments optionnels. Function.prototype.toString()-
Retourne une chaîne de caractères représentant le code source de la fonction. Surcharge la méthode
Object.prototype.toString. Function.prototype[Symbol.hasInstance]()-
Définit la procédure par défaut pour déterminer si une fonction constructeur reconnaît un objet comme étant une de ses instances. Appelée par l'opérateur
instanceof.
Exemples
>Différence entre l'utilisation du constructeur Function() et les déclarations de fonction
Les fonctions créées avec le constructeur Function() ne créent pas de fermetures contenant leur contexte de création ; elles sont toujours créées dans la portée globale. Lors de leur exécution, elles ne pourront accéder qu'à leurs propres variables locales et aux variables globales, elles ne pourront pas accéder aux variables de la portée dans laquelle le constructeur Function() a été appelé. Il s'agit d'un comportement différent que celui obtenu en utilisant eval() avec une expression de fonction.
// Crée une propriété globale avec `var`
var x = 10;
function creerFonction1() {
var x = 20;
return new Function("return x;"); // ce `x` fait référence au `x` global
}
function creerFonction2() {
var x = 20;
function f() {
return x; // ce `x` fait référence au `x` local ci-dessus
}
return f;
}
var f1 = creerFonction1();
console.log(f1()); // 10
var f2 = creerFonction2();
console.log(f2()); // 20
Bien que ce code fonctionne dans les navigateurs web, f1() déclenchera une erreur ReferenceError avec Node.js, car x ne sera pas trouvé. En effet, la portée de plus haut niveau de Node n'est pas la portée globale et x sera local au module.
Spécifications
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # sec-function-objects> |
Compatibilité des navigateurs
Voir aussi
- La déclaration
function - Le mot-clé
function - L'objet
AsyncFunction - L'objet
AsyncGeneratorFunction - L'objet
GeneratorFunction - Les fonctions