Кажется, лучший способ справиться с аргументами в функциях javascript - это потребовать, чтобы вызывающая сторона передала ассоциативный массив:
example = function(options) {
alert('option1: ' + options.a + ', option2: ' + options.b);
}
Теперь при вызове этой функции аргументы именуются и не нужны в каком-либо определенном порядке.:
example({'b':'hello option2', 'a':'hello option1'});
Единственное, что мне не нравится, это то, что мне нужно иметь весь этот дополнительный код, чтобы иметь дело с обязательными и стандартными аргументами, не говоря уже о том, чтобы не допускать дополнительных аргументов, чтобы вызывающий знал, что они вызвали функциюнеправильно:
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);
}
Есть ли стандартный способ справиться с этим?Я полагаю, я могу создать такую функцию, как:
deal_with_args(options, required_args, default_args, allowed_args)
и выдать какое-то исключение, если required_args или allow_args нарушены ...