1. ホーム
  2. javascript

[解決済み] Javascriptにおける関数のオーバーロード - ベストプラクティス [終了しました]。

2022-03-17 05:25:57

質問

Javascriptで関数のオーバーロードをごまかすには、どのような方法がありますか?

Javascriptでは、他の言語のように関数をオーバーロードすることができないことは承知しています。 もし、2つの用途を持つ関数が必要なら foo(x)foo(x,y,z) どのような方法がベストなのか、好ましいのか。

  1. そもそも異なる名前を使用する
  2. のようなオプションの引数を使用します。 y = y || 'default'
  3. 引数の個数を指定する
  4. 引数の種類を確認する
  5. またはどのように?

解決方法は?

パラメータを使った関数のオーバーロードを行う最良の方法は、引数の長さや型をチェックしないことです。型をチェックするとコードが遅くなるだけで、配列、ヌル、オブジェクトなどの楽しみがあります。

多くの開発者がやっていることは、メソッドの最後の引数としてオブジェクトを追加することです。 このオブジェクトは何でも入れることができます。

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"});

そうすれば、メソッドの中で好きなように処理することができます。[スイッチ、if-elseなど】。]