SELFHTML/Aides à la navigation JavaScript/DOM Référence objet |
Function | |
Propriétés:
arguments (tableau de noms d'arguments) |
|
Par l'objet Function
vous avez accès aux propriétés d'une fonction JavaScript. Les fonctions JavaScript font ainsi elles même l'objet d'instructions JavaScript. Travailler avec l'objet Function est judicieux, par exemple en relation avec un nombre de paramètres variable dans une fonction.
Vous pouvez créer spécialement un nouvel objet Function
.
couleur = new Function("nouvelle_couleur","document.bgColor=nouvelle_couleur;"); |
function couleur(nouvelle_couleur) { document.bgColor=nouvelle_couleur; } |
<a href="javascript:couleur('#FFCC99')">Nouvel arrière plan</a> |
Considérez dans un premier temps la partie au milieu de l'exemple ("correspondance de l'exemple en écriture normale"). C'est la définition normale d'une fonction. Dans la partie au dessus, la même fonction est définie sous la forme toutefois d'un objet fonction. L'objet fonction est créé avec new Function(...)
. La valeur retournée est sauvegardée dans une variable, dans l'exemple la variable couleur
. Comme paramètres, la fonction Function
attend un nombre de paramètres au choix (ceux que la fonction doit attendre), interprétés en tant que tels jusqu'à l'avant dernier. Dans l'exemple il y a un tel paramètre, à savoir le paramètre nouvelle_couleur
. Le dernier paramètre qui est transmis à la fonction Function
est une chaîne de caractères qui représente le contenu global de la fonction, donc les instructions JavaScript dans la fonction.
Une variable dans laquelle est sauvegardée une fonction, comme dans l'exemple la variable couleur
, peut être appelée exactement comme une fonction. La troisième partie ("exemple d'appel dans les deux cas") est effectivement valable pour les deux cas, car dans l'un des cas, c'est la variable couleur
qui est appelée dans laquelle toute une fonction est sauvegardée, et dans l'autre cas c'est une fonction du nom de couleur()
qui est appelée.
Vous n'êtes cependant pas obligés de créer un nouvel objet fonction: vous pouvez également utiliser directement sur une fonction les propriétés de l'objet fonction.
<html><head><title>Test</title> </head><body> <script type="text/javascript"> <!-- function listeHTML(Type) { document.write("<" + Type + "l>"); for (var i=1; i<listeHTML.arguments.length; i++) document.write("<li>" + listeHTML.arguments[i]+"</li>"); document.write("</" + Type + "l>"); } listeHTML("U","un","deux","trois"); //--> </script> </body></html> |
L'exemple écrit de façon dynamique une liste HTML dans le fichier soit comme liste énumérative, soit comme liste numérotée. Cela se fait dans une fonction du nom de listeHTML()
. Sous la fonction se trouve l'appel de la fonction, dans lequel quatre paramètres sont transmis. Pourtant, la fonction listeHTML()
n'attend qu'un paramètre, à savoir le paramètre Type
. Pour cela, il faut transmettre un U
ou un O
. Suivant le cas, la fonction génère une liste <ul>
(énumérative) ou une liste <ol>
(numérotée).
À l'intérieur de la fonction, le nombre effectif d'éléments transmis est cependant demandé avec listeHTML.arguments.length
. La fonction suppose que tous les paramètres à partir du deuxième sont des éléments de la liste désirée. La fonction écrit avec des commandes document.write()
les points correspondants en utilisant dans l'ordre les paramètres transmis, étant donné que cette action se situe dans une boucle for
.
Sauvegarde dans un tableau, donc dans une chaîne d'éléments, les arguments qui ont été transmis à une fonction. Chaque élément représente un argument. La propriété n'est disponible que dans la fonction à laquelle elle se réfère.
<html><head><title>Test</title> </head><body> <script language="JavaScript" type="text/javascript"> <!-- function Test(nom,prenom) { document.write("La fonction a reçu " + Test.arguments.length + " arguments"); for (var i=0; i<Test.arguments.length; ++i) document.write("<BR>" + Test.arguments[i]); } Test("François", "Serge"); //--> </script> </body></html> |
L'exemple définit une fonction Test()
, qui se voit transmettre deux paramètres. La fonction écrit de façon dynamique dans le fichier HTML, combien de paramètres elle attend puis, dans une boucle for
, quelles valeurs ont été transmises.
Avec nomdelafonction.arguments.length
vous recherchez le nombre de paramètres effectivement transmis (et non pas le nombre de paramètres attendus).
Avec nomdelafonction.arguments[0]
vous adressez la valeur du premier paramètre transmis, avec nomdelafonction.arguments[1]
celui du deuxième paramètre etc...
Sauvegarde le nombre d'arguments attendus par une fonction. La propriété n'est disponible que hors de la fonction à laquelle elle se réfère. Le passage JavaScript dans lequel l'instruction apparaît doit être marqué avec JavaScript1.2
.
<html><head><title>Test</title> <script language="JavaScript1.2" type="text/javascript"> <!-- function Test(nom,prenom) { return(prenom + " " + nom); } alert("La fonction attend " + Test.arity + " arguments"); //--> </script> </head><body> </body></html> |
L'exemple définit une fonction Test()
, qui attend deux paramètres. La fonction n'est pas du tout appelée dans l'exemple, à la place une boite de dialogue sort combien d'arguments la fonction Test()
attend. Pour ce faire, la propriété arity
est appliquée à la fonction désirée.
Sauvegarde la fonction complète à partir de laquelle la fonction actuelle a été appelée. A la valeur null
, au cas où l'appel a eu lieu directement d'un gestionnaire d'événement ou à la lecture du fichier hors de toute autre fonction. La propriété n'est disponible que dans la fonction à laquelle elle se réfère.
<html><head><title>Test</title> <script type="text/javascript"> <!-- function Test() { alert(Test.caller); } function appel() { Test(); } //--> </script> </head><body> <a href="javascript:appel()">Qui appelle Test()?</a> </body></html> |
L'exemple définit dans l'entête de fichier deux fonctions: une fonction Test()
et une fonction appel()
. La fonction Test()
ne fait rien d'autre que sortir à partir de quelle fonction elle a été appelée, la fonction appel()
ne fait rien d'autre qu'appeler la fonction Test()
. Dans le fichier, un lien est noté plus loin qui, lorsqu'on le clique, appelle la fonction appel()
qui à son tour appelle la fonction Test()
. La fonction Test()
sort alors le code complet de la fonction appel()
. .
Opera 5.12 n'interprète pas cette propriété.
Math | |
Date | |
SELFHTML/Aides à la navigation JavaScript/DOM Référence objet |
© 2001 Stefan Münz / © 2002 Traduction Serge François, 13405@free.fr
selfhtml@fr.selfhtml.org