Javascript で関数オーバーロードを偽装する最良の方法は何ですか?
他の言語のように JavaScript で関数をオーバーロードすることはできないことはわかっています。2 つの用途を持つ関数が必要でfoo(x)
、foo(x,y,z)
どの方法が最良または推奨されるか:
- そもそも異なる名前を使う
- オプション引数を使用する
y = y || 'default'
- 引数の数を使用する
- 引数の種類のチェック
- あるいはどうやって?
ベストアンサー1
パラメータを使用して関数をオーバーロードする最善の方法は、引数の長さや型をチェックしないことです。型をチェックするとコードが遅くなるだけで、配列、null、オブジェクトなどの問題が生じます。
ほとんどの開発者は、メソッドの最後の引数としてオブジェクトを追加します。このオブジェクトには何でも格納できます。
function foo(a, b, opts) {
// ...
if (opts['test']) { } //if test param exists, do something..
}
foo(1, 2, {"method":"add"});
foo(3, 4, {"test":"equals", "bar":"tree"});
その後、メソッド内で好きなように処理できます。[Switch、if-else など]