【Web】JavaScriptのオーバーロード

ようすけ

2009年08月20日 09:00

Web開発開発にまだ慣れてない頃、
C#やJavaの感覚でコーディングしたら
思ったとおり動かなくて。

function Test (arg1)
{
 処理1
}

function Test (arg1,arg2)
{
 処理2
}

function form_Load()
{
 Test (arg1);
 Test (arg1,arg2);
}
としたら、処理1が2回実行されてしまう。
arg2はとりあえず無視されるらしい。


つまり
JavaScriptではオーバーロードはできない。

手っ取り早いのは
メソッド名(ファンクション名?)を違うものにする。(雑っ!)

もっとちゃんとする場合
オーバーロードちっくにコーディングする。

JavaScriptにはargumentsというオブジェクトがあって、
これで関数に渡された引数の数をチェックできるのでそれを利用して、

function Test (arg1,arg2)
{
 if (arguments.length == 1)
 {
  //引数が1つの場合
  処理1
 }
 else if (arguments.length == 2)
 {
  //引数が2つの場合
  処理2
 }
}

これだと、引数をもう1つ増やしたいと思ったら、

function Test (arg1,arg2,arg3)

と修正して、引数が3つの場合の処理を加え、

function form_Load()
{
 Test (arg1);
 Test (arg1,arg2);
 Test (arg1,arg2,arg3); ←これを追加
}

とすれば、処理1~処理3が実行される。

理屈はわかったので
あとは開発者の好みで美しいコーディングすればよいと。



この記事がお役に立ったようでしたらぜひクリックお願いしますm(_ _)m

関連記事