Heim  >  Artikel  >  Web-Frontend  >  Interessante Fragen in JavaScript: Abbildung von Formalparametern und Aktualparametern

Interessante Fragen in JavaScript: Abbildung von Formalparametern und Aktualparametern

黄舟
黄舟Original
2017-01-22 14:55:572084Durchsuche

Als Erweiterung der Funktionsfunktion müssen Sie beim Aufruf einer Funktion eine korrekte Zuordnungsbeziehung zwischen ihren formalen Parametern und tatsächlichen Parametern herstellen.

Sehen Sie sich zunächst das folgende Beispiel an:

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

Diese Zuordnungsfunktion erhält als ersten Parameter ein Funktionsobjekt und eine Liste tatsächlicher Parameter unbekannter Länge. Sie müssen Folgendes hinzufügen: Zuordnung zwischen den formalen Parametern und der tatsächlichen Parameterliste, Darstellung mit einem assoziativen Array und Rückgabe.

Die Reihenfolge der tatsächlichen Parameterliste und der Funktionsparameterdefinition ist dieselbe und es handelt sich bei allen um gültige und zulässige Parameter.

In diesem Thema geht es darum, die Zuordnung zwischen formalen Parametern und tatsächlichen Parametern herzustellen. Anschließend erhalten wir zunächst die toString()-Zeichenfolgenform des Funktionsobjekts und fangen seine formale Parameterliste ab.

Da die Länge der tatsächlichen Parameterliste unbekannt ist, verwenden Sie als Nächstes die Methode Array.prototype.slice, setzen Sie ihren Kontext auf das Argumentobjekt, fangen Sie die tatsächlichen Parameter ab Index 1 ab und erhalten Sie die Array-Form der aktuellen Parameterliste.

Abschließend erstellen Sie basierend auf der tatsächlichen Parameterliste ein assoziatives Array mit dem formalen Parameter als Schlüssel und dem tatsächlichen Parameter als Wert und geben das assoziative Array zurück.

Auf diese Weise ist die Parameterzuordnungsfunktion abgeschlossen.

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;  
}

Das Obige ist der Inhalt interessanter JavaScript-Fragen: die Zuordnung formaler Parameter und tatsächlicher Parameter. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn)!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn