Visit Mozilla.org

Référence de JavaScript 1.5 Core:Objets globaux:Function

Un article de MDC.


Sommaire

[modifier] Résumé

Objet Core

Chaque fonction en JavaScript est en réalité un objet Function.

[modifier] Création

Comme tous les autres objets, les objets Function peuvent être créés à l'aide de l'instruction new :

new Function ([arg1[, arg2[, ... argN]],] corpsDeLaFonction)
arg1, arg2, ... argN 
les noms à utiliser pour les paramètres formels de la fonction. Chacun doit être une chaîne correspondant à un identifiant valide en JavaScript ou une liste de telles chaînes séparées par des virgules. Par exemple "x", "laValeur" ou "a,b".
corpsDeLaFonction 
une chaîne contenant les instructions JavaScript faisant partie de la définition de la fonction.

L'appel du constructeur Function comme une fonction (sans utiliser l'opérateur new) a le même effet que son appel en tant que constructeur.

[modifier] Description

[modifier] En général

Les objets Function créés avec le constructeur Function sont évalués à chaque utilisation. C'est moins performant que de déclarer une fonction et de l'appeler depuis votre code, parce que les fonctions déclarées ne sont analysées qu'une seule fois.

[modifier] Spécification de paramètres avec le constructeur Function

Le code suivant crée un objet Function recevant deux paramètres.

var multiplie = new Function("x", "y", "return x * y");

Les paramètres "x" et "y" sont des noms de paramètres formels utilisés dans le corps de la fonction, "return x * y".

Ce code assigne la fonction à une variable multiplie. Pour appeler l'objet Function, le nom de la variable peut être spécifié comme s'il s'agissait d'une fonction, comme dans les exemples qui suivent.

var reponse = multiplie(7, 6);

var age = 50;
if (age >= 39)
  age = multiplie(age, .5);

[modifier] Propriétés

arguments Déprécié : un tableau correspondant aux paramètres passés à une fonction. Cette propriété de Function ne doit plus être utilisée, utilisez plutôt l'objet arguments disponible au sein de la fonction.

arity Déprécié : spécifie le nombre de paramètres attendus par la fonction. Utilisez plutôt la propriété length.

caller : indique la fonction ayant invoqué la fonction en cours d'exécution (ne fait par partie du standard).

constructor : spécifie la fonction créant le prototype d'un objet.

length : spécifie le nombre de paramètres attendus par la fonction.

name : le nom de la fonction (ne fait pas partie du standard).

prototype : permet d'ajouter des propriétés aux objets Function (qu'ils aient été construits à l'aide de Function ou déclarés dans une déclaration ou une expression de fonction).

[modifier] Méthodes

apply : permet d'appliquer la méthode d'un objet dans le contexte d'un objet différent (l'objet appelant).

call : permet d'appeler (exécuter) une méthode d'un autre objet dans le contexte d'un objet différent (l'objet appelant).

toSource : renvoie une chaîne représentant le code source de la fonction. Remplace la méthode Object.toSource.

toString : renvoie une chaîne représentant le code source de la fonction. Remplace la méthode Object.toString.

valueOf : renvoie une chaîne représentant le code source de la fonction. Remplace la méthode Object.valueOf.

[modifier] Exemples

[modifier] Exemple : création d'évènements « focus » et « blur » pour un cadre

L'exemple qui suit crée des gestionnaires d'évènements onFocus et onBlur pour un cadre. Ce code se place dans le même fichier que celui contenant la balise frameset. Notez qu'un script est la seule manière de créer des gestionnaires pour les évènements « focus » et « blur » pour un cadre, puisqu'il n'est pas possible de spécifier des gestionnaires d'évènements dans la balise frame.

var frame = frames[0];
frame.onfocus = new Function("document.body.style.backgroundColor = 'white';");
frame.onblur = new Function("document.body.style.backgroundColor = '#bbbbbb';");

[modifier] Voir aussi

Fonctions