Visit Mozilla.org

Guide JavaScript 1.5:Objets prédéfinis:L'objet Function

Un article de MDC.


[modifier] L'objet Function

L'objet prédéfini Function spécifie une chaîne de code JavaScript compilable sous la forme d'une fonction.

Pour créer un objet Function :

objetFunction = new Function ([arg1, arg2, ... argn], corpsDeFonction)

objetFunction est le nom d'une variable ou d'une propriété d'un objet existant. Il peut également s'agir d'un objet suivi par un nom de gestionnaire d'évènement en minuscules, comme window.onerror.

arg1, arg2, ... argn sont les noms formels des paramètres utilisables par la fonction. Chacun d'eux doit être une chaîne correspondant à un identifiant JavaScript valide ; par exemple "x" ou "formulaire".

corpsDeFonction est une chaîne spécifiant le code JavaScript qui doit être interprété comme le corps de la fonction.

Un objet Function est évalué à chacune de ses utilisations. Ce qui est moins efficient que la déclaration initiale d'une fonction et son appel répété au sein du code, car les fonctions déclarées sont compilées une fois pour toutes.

Outre la définition de fonctions telle que décrite ici, il est également possible d'utiliser l'instruction function suivie de l'expression de la fonction. Consultez la Référence de JavaScript 1.5 Core pour plus d'informations.

Le code qui suit code assigne une fonction à la variable setBGColor. Cette fonction modifie la couleur de fond du document courant.

var setBGColor = new Function("document.bgColor='antiquewhite'");

Pour appeler l'objet Function, il suffit de spécifier le nom de la variable comme s'il s'agissait d'une fonction. Le code suivant exécute la fonction spécifiée par la variable setBGColor :

var choixCouleur = "antiquewhite";
if (choixCouleur == "antiquewhite") { setBGColor(); }

La fonction peut être assignée à un gestionnaire d'évènement d'une de ces deux manières :

document.form1.colorButton.onclick = setBGColor;

ou

<input name="couleur" type="button"
     value="Changer la couleur de fond"
     onclick="setBGColor()">

La création de la variable setBGColor telle que présentée ci-dessous est similaire à la déclaration de la fonction suivante :

function setBGColor() {
  document.bgColor = 'antiquewhite';
}

L'assignation d'une fonction à une variable est similaire à la déclaration d'une fonction, mais certaines différences existent :

  • Lorsqu'une fonction est assignée à une variable en utilisant setBGColor = new Function("..."), setBGColor est une variable dont la valeur est une référence à la fonction créée avec new Function().
  • Lorsqu'une fonction est créée en utilisant function setBGColor() {...}, setBGColor n'est pas une variable, c'est le nom de la fonction.

Il est possible d'intégrer une fonction au sein d'une autre fonction. La fonction interne est privée et accessible uniquement par sa fonction parente :

  • La fonction interne est uniquement accessible depuis des instructions de la fonction parente.
  • La fonction interne peut utiliser les paramètres et variables de la fonction parente. La fonction parente ne peut pas utiliser les paramètres et variables de sa fonction interne.