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
Arguments
Cet objet représente les paramètres de la fonction exécutée et appelle sa fonction.
[fonction.] Arguments [n]
Fonction du paramètre: 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.
illustrer
Les arguments sont un objet caché créé en plus des paramètres spécifiés lorsque la fonction appelle. 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 d'un objet d'objets.
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 + = "/ n / n"
Pour (i = 0; i <numargs; i ++) {// Obtenez le contenu du paramètre.
s + = "arg" + i + "=" + arguments [i] + "/ n";
}
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.
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 fonctionname.tstring, c'est-à-dire qu'il montre le texte de 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 de fonction facultatif est le nom de l'objet fonction en cours d'exécution.
illustrer
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 0;
autre
Retour n + arguments.callee (n -1)
}
Fonctions de récursivité plus générales:
Copier le code du code comme suit:
var sum = fonction (n) {
if (n <= 0)
Retour 0;
autre
Retour 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, tout ce que ce pointeur à l'intérieur de la fonction sera attribué à Thisarg, qui peut atteindre le but d'exécuter la fonction comme un autre objet.
Appliquer la description
Si l'argarray n'est pas un tableau efficace ou n'est pas un objet d'arguments, il provoquera un typerror.
Sans aucun paramètre d'argarray et de thisarg, l'objet global sera utilisé comme thisarg,
Et ne peut être transmis sur aucun paramètre.
Description de l'appel
La méthode d'appel peut modifier le contexte d'un objet d'une fonction du contexte initial à un nouvel objet spécifié par ThisArg.
S'il n'est pas fourni par les paramètres de cearg, alors l'objet global est utilisé comme thisarg
Compétences connexes:
Il existe une autre technique dans l'application de l'appel et s'applique, c'est-à-dire qu'après avoir utilisé une autre fonction (classe) avec appel et appliquer, la fonction actuelle (classe) a une autre méthode (classe) ou attribut. "héritage". 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 Appliquer pour créer un modèle défini dans le framework JavaScript Propro.
En fait, le code actuel est le suivant:
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. Grâce à cette manière, vous pouvez implémenter le mode de création de classe dans le prototype
Exemple:
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 = new Vene ("moto");
Moto.showelf ();