La définition de la fonction JS peut spécifier le nom de paramètre formel. Ce paramètre est similaire à un tableau. méthode. En d'autres termes, toutes les fonctions de JS prennent en charge les paramètres infinis, et le type de données est un type faible, donc il n'y a vraiment pas de différence de méthode entre les fonctions JS sauf pour les noms?
Il existe toujours des moyens, nous pouvons utiliser des arguments d'objets spéciaux en JavaScript pour simuler la surcharge de la fonction. Utilisez-le pour déterminer le nombre ou le type de paramètres entrants pour distinguer la surcharge.
1. Recharger selon le nombre de paramètres
JS pour déterminer le nombre de paramètres entrants peut être jugé par l'attribut Arguments.Length;
La copie de code est la suivante:
<script type = "text / javascript">
fonction add () {
if (arguments.length == 1) {
alerte (arguments [0] + 10);
}
else if (arguments.length == 2) {
alerte (arguments [0] + arguments [1]);
}
}
// appel de fonction
ajouter (10);
ajouter (10, 20);
</cript>
2. Recharger selon le type de paramètre
Il existe 3 façons de juger des types variables:
1. Utilisez l'instruction TypeOf pour juger le type de variable, et l'instruction TypeOf Renvoie la chaîne correspondant au type.
2. Utilisez l'instruction InstanceOf pour juger le type de variable, et l'instruction InstructionOf Renvoie True / FAUX.
3. Utilisez l'attribut constructeur pour déterminer le type de variable, qui renvoie la référence du constructeur utilisé pour construire la variable.
Tableau de comparaison: On peut voir que l'utilisation de typeof ne peut pas déterminer avec précision le type spécifique, nous utilisons donc le constructeur pour porter des jugements.
typeof | chaîne | nombre | objet | fonction | booléen | objet | objet |
constructeur | Chaîne | Nombre | Objet | Fonction | Booléen | Tableau | Utilisateur définir |
La copie de code est la suivante:
<script type = "text / javascript">
fonction add ()
{
if (arguments.length == 0) return 0;
var sum = 0;
pour (var i = 0; i <arguments.length; i ++) {
if (arguments [i] .constructor == numéro) {
// ou passer à: if (arguments [i] instance de numéro)
// ou passer à: if (typeof (arguments [i]) == "nombre")
sum + = arguments [i];
}
}
somme de retour;
}
// appel de fonction
alerte (add (10));
alerte (ADD (10,20));
</cript>