ここは、ふぇりあ16歳が不定期に連載しているオンライン小説のページです。

VNIふぇりあ16歳へ


ゼロからわかる現代JavaScript

44.擬似的オーバーロード

今回は、一つのメソッド名で

同じメソッド名(引数)

同じメソッド名(引数, 引数)


などとしたい場合です

それをメソッドのオーバーロードと呼びます。

Javascriptにはオーバーロードは定義されていません、

しかし一部のあらかじめ定義されたメソッドでは
オーバーロード可能なものがあります。

それを自分でも作ってみたいものです。

そこで擬似的な方法でそれに似たものを実現してみましょう。

前回の arguments.length

を使います。

今回使用するソースコード
//擬似的オーバーロード
document.write("引数が一つ:");
document.write(add(100));

document.write("<br><br>");

document.write("引数が二つ:");
document.write(add(20, 30));

document.write("<br><br>");

document.write("引数が三つ:");
document.write(add(20, 30, 40));

function add(x, y, z) {
  switch (arguments.length){

    case 1:
    //引数が一つの時
      return add1(x);
    case 2:
    // 引数が2つの時
      return add2(x, y);
    case 3:
    // 引数が3つの時
      return add3(x, y, z);
  }
}
function add1(x){
  return x;
}
function add2(x, y){
  return x + y;
}
function add3(x, y, z) {
  return x + y + z;
}

それにより引数の数で、条件分岐され
目的のメソッドを呼び出すことができます。

またオーバーライドとオーバーロードは混同しやすいですよね。

どちらが大事かといえばオーバーライドの方が大事です。

実行結果

コラム:

if文でも同じものが作れるのですが

ifとswitch ならswitchの方が簡素なので

その方がいいと思います。

他の言語ではもっと簡単に定義できます。

(C)著作権はふぇりあ16歳とお兄ちゃんにあります。
無断転載、盗用は禁止です。