1. Que sont les arguments
les arguments sont un objet intégré en JavaScript. C'est étrange et souvent négligé, mais c'est en fait très important. Toutes les principales bibliothèques JavaScript utilisent l'objet arguments. L'objet agruments doit donc être familier aux programmeurs JavaScript.
Toutes les fonctions ont leur propre objet arguments, qui contient les paramètres à appeler par la fonction. Ce n'est pas un tableau. Si des arguments typeof sont utilisés, « objet » est renvoyé. Bien que nous puissions appeler des arguments en utilisant la méthode d'appel de données. Par exemple, les méthodes de longueur et d'index. Mais les objets array push et pop ne sont pas applicables.
2. Créer une fonction flexible
Il semble que l'objet argument soit très limité dans son utilisation, mais en fait c'est un objet très utile. Vous pouvez permettre à une fonction d'être appelée avec un nombre variable d'arguments en utilisant l'objet argument. Il existe une fonction de formatage dans la bibliothèque base2 de Dean Edwards qui démontre cette flexibilité.
function format(string) {
var args = arguments;
var pattern = new RegExp(“%([1-" arguments.length "])”, ”g”); return String(string).replace(pattern, function(match, index)); {
Retourner les arguments[index] ;
});
};
Nous fournissons une chaîne de modèle, vous pouvez utiliser "%1" à "%9" pour ajouter un espace réservé à la valeur de retour. Neuf autres paramètres sont ensuite fournis pour l'insertion.
Copier le code Le code est le suivant :format("Et le %1 veut savoir à qui appartient le % 2 vous % 3″, « papiers », « chemise », « porter »);
Le code ci-dessus reviendra : Et les journaux veulent savoir de qui vous portez la chemise".
Il y a une chose nous devons faire attention, lors de la définition de la fonction, nous ne spécifions qu'un seul paramètre, la chaîne. Javascript nous permet de transmettre n'importe quel nombre de paramètres à une fonction, quelle que soit la manière dont la fonction est définie. L'objet Arguments les autorise. est converti en un vrai tableau
Bien que l'objet arguments ne soit pas un vrai tableau JavaScript, nous pouvons facilement le convertir en données standard puis effectuer des opérations sur le tableau 🎜>
Copier le code
. Le code est le suivant :
Copier le code
Le. le code est le suivant :
function makeFunc() {
var args = Array.prototype.slice.call(arguments);
Le premier argument appliqué pointe vers la portée de l'appel de fonction, principalement vers les éléments clés à l'intérieur de la fonction. Gardons cette valeur nulle pour l'instant. Le deuxième argument est un tableau, qui sera converti en objet arguments pour cette fonction. makeFunc concatène les valeurs du tableau d'origine dans l'objet arguments et fournit les tableaux à la fonction anonyme et à la fonction appelée.
Vous devez toujours afficher un modèle à la même position, afin de ne pas avoir à toujours appeler la fonction format à chaque fois que le modèle est référencé. Vous pouvez utiliser la fonctionnalité générique de makeFunc pour renvoyer une fonction qui appelle format puis complète automatiquement le modèle.
Copier le code
Le code est le suivant :
var majorTom = makeFunc(format, « Voici le Major Tom au contrôle au sol. Je suis %1.”);
Vous pouvez appeler la fonction majorTom comme ceci :
majorTom("passer la porte");
majorTom("flotter d'une manière très particulière");
Chaque fois que vous appelez majorTom, il appellera à la fois la fonction de format et le premier argument, le modèle qui a été rédigé. Ensuite, il reviendra
"Voici le major Tom au contrôle au sol . Je franchis la porte."
"Voici le major Tom au contrôle au sol. Je flotte d'une manière très particulière."
5. Créez une fonction qui se référence.
Vous pensez peut-être que c'est très étrange, Cool, mais les arguments ont plus de surprises. Il possède d’autres fonctionnalités utiles : la méthode de l’appelé. Arguments.callee contient une référence à une fonction pour créer un objet arguments. Alors comment l'utiliser ?
La méthode Arguments.callee permet à une fonction anonyme de pointer vers elle-même facilement.
Répéter est une fonction qui porte une référence de fonction et deux nombres. Le premier nombre est le nombre de fois que la fonction est appelée et le deuxième nombre est le temps entre chaque appel, en millisecondes.
fonction répétition (fn, times, delay) {
return function () {
if(times– > 0) {
fn.apply(null, arguments);
var args = Array.prototype.slice.call(arguments); var self = arguments.callee;
setTimeout(function(){self.apply(null,args)},
}
};
La fonction Repeat utilise la méthode arguments.callee pour obtenir une référence de la variable self, pointant vers la fonction qui a exécuté l'instruction d'origine. De cette façon, la fonction anonyme peut s'appeler à nouveau.
J'ai une fonction super simple qui transporte une chaîne et exécute la méthode d'alerte.
Copier le code
}
Cependant, je souhaite créer une version spéciale grâce à laquelle je peux répéter cette action trois fois, chaque fois avec un intervalle de 2 secondes. Ensuite, on peut
Copier le code
Le résultat de l'appel de la fonction SomethingWrong est de répéter cette action trois fois, avec un intervalle de 2 secondes entre les alertes. .
Bien qu'Arguments ne soit pas souvent utilisé et soit un peu bizarre, il est plein de surprises et mérite d'être compris.