In einigen Szenarien ist der dynamische Zugriff auf die Parameternamen und -werte einer Funktion erforderlich. In diesem Artikel wird eine robuste Lösung für dieses Problem untersucht.
Die folgende Funktion, getParamNames, kann die Parameternamen jeder bereitgestellten Funktion extrahieren:
var STRIP_COMMENTS = /((\/\/.*$)|(\/\*[\s\S]*?\*\/))/mg; var ARGUMENT_NAMES = /([^\s,]+)/g; function getParamNames(func) { var fnStr = func.toString().replace(STRIP_COMMENTS, ''); var result = fnStr.slice(fnStr.indexOf('(')+1, fnStr.indexOf(')')).match(ARGUMENT_NAMES); if(result === null) result = []; return result; }
getParamNames(getParamNames) // returns ['func'] getParamNames(function (a,b,c,d){}) // returns ['a','b','c','d'] getParamNames(function (a,/*b,c,*/d){}) // returns ['a','d'] getParamNames(function (){}) // returns []
Mit dem Aufkommen In ES6 können Standardparameter die Funktion getParamNames auslösen. Um dieses Problem zu beheben, wird eine aktualisierte Version bereitgestellt:
var STRIP_COMMENTS = /(\/\/.*$)|(\/\*[\s\S]*?\*\/)|(\s*=[^,\)]*(('(?:\'|[^'\r\n])*')|("(?:\"|[^"\r\n])*"))|(\s*=[^,\)]*))/mg;
Während diese erweiterte Version in den meisten Fällen Standardparameter verarbeitet, können Ausnahmen auftreten.
In Zusätzlich zum Abrufen von Parameternamen kann es sein, dass man auch die entsprechenden Werte benötigt. Dies ist über die lokale Variable arguments leicht zugänglich, die in ein Array konvertiert werden kann:
var args = Array.prototype.slice.call(arguments);
Alternativ, wenn Array-Generika verfügbar sind:
var args = Array.slice(arguments);
Durch den Einsatz dieser Techniken können Entwickler kann dynamisch auf die Parameter und Werte von Funktionen für verschiedene Anforderungen und Anpassungen zugreifen.
Das obige ist der detaillierte Inhalt vonWie kann ich Namen und Werte von JavaScript-Funktionsparametern dynamisch abrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!