Есть несколько вариантов.Один из них - проверить тип переданных параметров, чтобы выяснить, что было передано.Если вы просто хотите изменить один аргумент и знаете, что он передается в определенном месте, вы можете просто скопировать массив аргументов, изменить этот параметр и использовать .apply () для передачи измененных аргументов (сколько бы их ни было) вк исходному вызову функции.
Для первого варианта детали написания кода зависят от того, какие комбинации параметров вы допускаете.Вот один метод, который допускает ноль или одну опцию в середине и обратный вызов всегда в конце.Это может быть сделано более общим с несколькими вариантами, если вы хотите.В этом случае вы, вероятно, будете использовать массив arguments.В любом случае, вот одна версия:
custom.get = function(path, option, callback) {
// option is an optional parameter
if (!callback || typeof callback != "function") {
callback = option; // callback must be the second parameter
option = undefined; // no option passed
}
if (option) {
app.get(path, option, callback);
} else {
app.get(path, callback);
}
}
Для второго варианта, вот общая версия, которая позволяет вам изменить аргумент пути и передать все остальные параметры через:
custom.get = function() {
// assumes there is at least one parameter passed
var args = [].slice.call(arguments); // make modifiable copy of arguments array
var path = args[0];
// do whatever you want with the path
args[0].path = path;
return(app.apply(this, args));
}