Вот эта идея: я хочу, чтобы иметь возможность сделать так, чтобы я мог изменить порядок, в котором данные ввода имеют значение в функции. Допустим, что нормальная функция выглядит так:Можете ли вы эффективно сбрасывать порядок ввода функций?
var f = function(a,b,c,d){
return a * b/c + d;
}
Я хочу, чтобы иметь возможность переопределить функцию, так что, когда пользователь вызывает f(w,x,y,z)
, если переменная (позволяет сказать changed
) истинно, он действует так, как будто пользователь под названием f(w,z,y,x)
! (Конкретно не в обратном порядке, просто другой порядок, чем исходная функция)
Если бы я хотел написать отдельную функцию, которая действовала таким образом, я мог бы сделать следующее:
var newF = function(a,b,c,d){
if(changed === true){
return f(c,d,b,a);
}
else{
return f(a,b,c,d);
}
}
, а затем заменить все f
звонков с звонками newF
, но это не то, о чем я прошу.
Возможно ли переопределить функцию с тем же именем, что и фактическая функция, и как это сделать? Если я не могу, объясните, почему нет.
Объяснение:
Поэтому я хочу, чтобы это сделать, потому что у меня есть приложение, которое имеет функцию, чтобы сделать все, естественно, звук (например, точки в линии прямолинейный), но если я включаю некоторые из значений , это создает забавную, нереалистичную ситуацию, которую, как я думал, будет интересным вариантом для реализации. Мой вариант выше выполнимо, и я мог бы использовать его, но мне было просто интересно, если это возможно, чтобы держать его в пределах одной и той же функции имени
Я не уверен, я понимаю, почему вы хотели бы сделать это. Что вы надеетесь достичь, изменив порядок аргументов «на лету»? – Amy
Это необходимо? наличие конкретной функции ведет себя по-разному на основе значения отключенной переменной, звучит как рецепт бедствия –
Возможно, вместо принятия нескольких аргументов вы хотите, чтобы функция принимала один объект, где каждое свойство является аргументом. Тогда вызывающему не нужно беспокоиться о порядке. –