Avant de se référer au concept ci-dessus, je veux d'abord parler des paramètres cachés de la fonction dans la fonction en javascript:
Arguments
Les arguments représentent les paramètres exécutés et la fonction d'appeler sa fonction. [fonction.] Paramètre d'arguments [n]
Fonction: Options. Le nom de l'objet fonction est actuellement exécuté.
N: Options. Pour passer l'index de valeur du paramètre de 0 à l'objet fonction. Il montre que les arguments sont un objet caché créé en plus du paramètre spécifié lorsque la fonction est appelée. Les arguments sont un objet similaire à un tableau mais pas un tableau. a la longueur d'attribut de longueur de tableau. Il y a aussi le paramètre que l'objet d'arguments stocke la fonction qui est réellement transmise à la fonction, non limitée à la liste des paramètres définie par l'instruction fonctionnelle, et ne peut pas être explicitement créée pour créer un objet d'arguments. L'objet Arguments ne peut être disponible qu'au début de la fonction.
L'exemple suivant explique ces propriétés en détail
Copier le code du code comme suit:
// L'utilisation de l'objet des arguments
Fonction argtest (a, b) {{
var i, s = "la fonction argtest attendue";
var numargs = arguments.length; // Obtenez la valeur des paramètres de passage.
Var expargs = argtest.length; // Obtenez la valeur des paramètres attendus.
if (expargs <2)
s + = expargs + "argument". ";
autre
s + = expargs + "arguments". ";;
if (numargs <2)
s + = numargs + "a été passé.";
autre
s + = numargs + "Nous sommes passés.";
S + = ""
Pour (i = 0; i <numargs; i ++) {// Obtenez le contenu du paramètre.
s + = "arg" + i + "=" + arguments + "" "";
}
Retour (s);
}
Voici un code qui explique que les arguments ne sont pas un tableau (classe de tableau):
Copier le code du code comme suit:
Array.prototype.setValue = 1;
alerte (nouvel array (). auto-valeur);
Fonction Tests () {
Alerte (arguments.selfvalue);
}
Vous trouverez le premier affichage d'alerte 1, ce qui signifie que l'objet Array a l'attribut d'auto-valeur avec une valeur de 1. est, l'attribut des arguments, c'est-à-dire que les arguments ne sont pas un objet de tableau.
Ajoutez un moyen simple d'ajouter ici: alerte (arguments instance de tableau);
Alert (arguments instanceof objet);
Demandeur
Renvoie une référence à la fonction qui appelle la fonction actuelle.
Functionname.Caller
L'objet FunctionName est le nom de la fonction d'exécution.
illustrer
Pour les fonctions, l'attribut de l'appelant n'est défini que lorsque la fonction est exécutée. Si la fonction est appelée à partir de la couche supérieure, l'appelant contient null. Si l'attribut de l'appelant est utilisé dans le contexte de la chaîne, le résultat est le même que FunctionName.TSTRING, c'est-à-dire qu'il montre que la fonction de la fonction est affichée.
Remarque: function.toString () peut réaliser la fonction anti-compilation de la fonction.
L'exemple suivant illustre l'utilisation de l'attribut de l'appelant:
Copier le code du code comme suit:
// Demo de l'appelant {
fonction calldemo () {
if (callerDemo.Caller) {
var a = callerdemo.caller.toString ();
alerte (a);
} Autre {
Alert ("Ceci est une fonction supérieure");
}
}
fonction handlecaller () {
AppelerDemo ();
}
Callee
Renvoie le texte de l'objet de fonction exécuté, le texte de l'objet de fonction spécifié. [Fonction.] Arguments.Callee Le paramètre facultatif est le nom de l'objet de fonction actuellement exécuté. Expliquez que la valeur initiale de l'attribut Callee est l'objet de fonction qui est exécuté. L'attribut Callee est un membre de l'objet Arguments, qui indique la référence à l'objet de fonction lui-même, qui est propice à la récursivité de la fonction anonyme ou à l'emballage de la fonction. Cet attribut n'est disponible que lorsque la fonction de corrélation est exécutée. Il convient de noter que Callee a un attribut de longueur. Arguments.Length est une longueur de paramètre solide, et les arguments.Callee.Length est la longueur du paramètre, qui peut déterminer si la longueur du paramètre est cohérente avec la longueur réelle du paramètre.
Exemple exemplaire
Copier le code du code comme suit:
// Callee peut s'imprimer
Fonction CalageMo () {
Alerte (arguments.callee);
}
// utilisé pour vérifier les paramètres
Fonction CalleElenglengthDemo (Arg1, Arg2) {{
if (arguments.length == arguments.callee.length) {
Window.Alert ("La vérification du ginseng et la longueur du paramètre solide est correcte!");
Retour;
} Autre {
Alert ("Longueur du paramètre solide:" + arguments.length);
Alert ("" Shape Permié: + arguments.Callee.Length);
}
}
// calcul récursif
var sum = fonction (n) {
if (n <= 0)
Retour 1;
autre
Retour n + arguments.callee (n -1)
} Par rapport aux fonctions récursives générales: var sum = fonction (n) {
if (1 == n) retour 1;
Else return n + sum (n-1);
}
Au moment de l'appel: alerte (somme (100));
Parmi eux, la fonction contient la référence à la somme elle-même.
Appliquer et appeler
Leur rôle est de lier la fonction à un autre objet.
s'appliquer (thisarg, argarray);
appel (thisarg [, arg1, arg2 ...]);
C'est-à-dire que ce pointeur à l'intérieur de toutes les fonctions sera attribué à Thisarg, ce qui peut réaliser le but de l'utilisation de la fonction comme autre méthode.
Si un paramètre d'argarray et de thisArg n'est pas fourni, l'objet global sera utilisé comme thisarg et ne peut être transmis sur aucun paramètre. La méthode de description de l'appel peut modifier le contexte d'un objet d'une fonction du contexte initial à un nouvel objet spécifié par ThisArg.
Si vous ne fournissez pas de paramètre ThisArg, l'objet global est utilisé comme une technique liée à ThisArg: après avoir appliqué l'appel et l'appliquer, il y a une autre technique. La fonction actuelle (classe).
Regardez l'exemple suivant:
Copier le code du code comme suit:
// démonstration héritée
Base de fonction () {
this.member = "dnnnsun_member";
this.method = function () {
Window.Alert (this.Member);
}
}
fonction expédition () {) {
base.Call (ceci);
Window.Alert (membre);
Window.Alert (this.Method);
}
Les exemples ci-dessus peuvent être constatés qu'après l'appel, l'étendue peut hériter de la méthode et des attributs de la base. Soit dit en passant, utilisez pour créer un modèle de définition dans le prototype JavaScript Framework.
Copier le code du code comme suit:
var class = {
Create: function () {
Return function () {
this.Initialize.apply (ceci, arguments);
}
}
}
Analyse: Dans le code, l'objet ne contient qu'une seule méthode: Create, qui renvoie une fonction, c'est-à-dire la classe. Mais il s'agit également d'un constructeur de la classe, où l'initialisation est appelée, et cette méthode est la fonction d'initialisation définie lors de la création de la classe. À travers cette manière, les exemples de motifs de création de classe dans le prototype peuvent être mis en œuvre:
Copier le code du code comme suit:
var véhicule = class.create ();
véhicule.prototype = {
initialiser: fonction (type) {
this.type = type;
}
Showfref: function () {{)
Alert ("Ceci est" + this.ype);
}
} Var moto = nouveau véhicule ("moto");
Moto.showelf ();