アイデアは次のとおりです。関数内で入力が重要な順序を変更できるようにしたいのです。通常の関数が次のように見えるとしましょう。
var f = function(a,b,c,d){
return a * b / c + d;
}
関数を再定義できるようにしたいので、ユーザーがf(w,x,y,z)
変数(言うとしましょうchanged
)がtrueの場合に呼び出すと、ユーザーが呼び出したように動作します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
が、それは私が求めていることではありません。
実際の関数と同じ名前の関数を再定義することは可能ですか?それはどのように行われますか? できない場合は、その理由を説明してください。
説明:
私がこれをやりたい理由は、すべてを自然に聞こえるようにする機能を持つアプリがあるためです (線の点が直線になるなど) が、値の一部を切り替えると、楽しく非現実的な状況が作成され、これは実装するのが楽しいオプションだと思いました。上記の私のオプションは実行可能であり、使用できますが、同じ関数名内に保持できるかどうか疑問に思っていました