Es scheint der beste Weg, um mit Argumenten in Javascript-Funktionen zu behandeln ist es, den Aufrufer zu verlangen, ein assoziatives Array übergeben:
example = function(options) {
alert('option1: ' + options.a + ', option2: ' + options.b);
}
Jetzt werden die Argumente benannt und müssen beim Aufruf dieser Funktion nicht in einer bestimmten Reihenfolge angegeben werden:
example({'b':'hello option2', 'a':'hello option1'});
Das Einzige, was ich nicht mag, ist, dass ich all diesen zusätzlichen Code haben muss, um mit erforderlichen und Standardargumenten umzugehen, ganz zu schweigen davon, dass keine zusätzlichen Argumente erlaubt sind, damit der Aufrufer weiß, dass er die Funktion falsch aufgerufen hat:
example = function(options) {
var required_args = ['a', 'd'];
var default_args = {'b':'option2', 'c':'option3'};
var allowed_args = ['a', 'b', 'c', 'd'];
// check required args
// check allowed args
for (var arg in default_args) {
if (typeof options[arg] == "undefined")
options[arg] = default_args[arg];
}
alert('option1: ' + options.a + ', option2: ' + options.b);
}
Gibt es eine Standardmethode, um damit umzugehen? Ich denke, ich kann eine Funktion erstellen wie:
deal_with_args(options, required_args, default_args, allowed_args)
Und werfen einige Ausnahme, wenn required_args oder allowed_args verletzt wird...