ここは、ふぇりあ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歳とお兄ちゃんにあります。
無断転載、盗用は禁止です。