Maison  >  Article  >  interface Web  >  Questions intéressantes en JavaScript : cartographie des paramètres formels et des paramètres réels

Questions intéressantes en JavaScript : cartographie des paramètres formels et des paramètres réels

黄舟
黄舟original
2017-01-22 14:55:572066parcourir

En tant qu'extension de la fonction function, vous devez établir une relation de mappage correcte entre ses paramètres formels et ses paramètres réels lorsqu'une fonction est appelée.

Regardons d'abord l'exemple suivant :

function func1(arg1, arg2) { ... }  
  
var map = createArgumentMap(func1,'valueOfArg1', 'valueOfArg2');  
console.log(map['arg1']);  // writes 'valueOfArg1'  
console.log(map['arg2']);  // writes 'valueOfArg2'

Cette fonction de mappage reçoit un objet fonction comme premier paramètre et une liste de paramètres réelle de longueur inconnue à laquelle vous devez l'ajouter. l'objet fonction. Établissez un mappage entre les paramètres formels et la liste de paramètres réelle, représentez-le avec un tableau associatif et renvoyez-le.

L'ordre de la liste des paramètres réels et de la définition des paramètres de fonction est le même, et ce sont tous des paramètres valides et légaux.

Ce sujet consiste à établir le mappage entre les paramètres formels et les paramètres réels. Ensuite, nous obtenons d'abord la forme de chaîne toString() de l'objet fonction et interceptons sa liste de paramètres formels.

Ensuite, comme la longueur de la liste de paramètres réelle est inconnue, utilisez la méthode Array.prototype.slice, définissez son contexte sur l'objet arguments, interceptez les paramètres réels à partir de l'index 1 et obtenez la forme du tableau de la liste de paramètres réelle.

Enfin, sur la base de la liste de paramètres réelle, établissez un tableau associatif, avec le paramètre formel comme clé et le paramètre réel comme valeur, et renvoyez le tableau associatif.

De cette façon, la fonction de mappage des paramètres est terminée.

String.prototype.trim = function(){    
  return this.replace(/(^\s*)|(\s*$)/g, "");    
};  
  
var findArgs = function(funcStr){    
    var bracket1 = funcStr.indexOf("(");    
    var bracket2 = funcStr.indexOf(")");    
    var argsStr = funcStr.slice(bracket1+1,bracket2);    
    var args = argsStr.split(",");    
    return args.map(function(e){    
        return e.trim();    
    });    
};   
  
function createArgumentMap(func) {  
    var args = findArgs(func.toString());  
    var realArgs = Array.prototype.slice.call(arguments,1);  
    var map = {};  
    for(var i=0;i<realArgs.length;i++){  
        map[args[i]] = realArgs[i];  
    }  
    return map;  
}

Ce qui précède est le contenu de questions JavaScript intéressantes : le mappage des paramètres formels et des paramètres réels. Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois (www.php.cn) !

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn