日々のアンテナ

ARTICLE PAGE

Javascriptでオーバーロードを実現する

JavaをやっていてJavascriptを触ったりすると非常にごちゃごちゃになります。 よくやるのが for(int i = 0;・・・ という風に、intなんて思わず使っちゃったり。 これは置いておいて、JavascriptではJavaでいうオーバーロード(引数の数や型が異なるメソッドを宣言すること)ができません。 fooというメソッドがあった場合、Javaなら foo(String str,int i)と foo(String str) foo(int i,int j)が宣言することができ、引数の型や数でメソッドが自動的に選択されます。 ところが、Javascriptにはそもそも変数の型がないし、メソッドはプロパティに関数オブジェクトが代入されているだけなので、同名のメソッドを作ることができないのです。 でも、プログラムを組んでいて、引数を増やしたくなることってありますよね? フラグをつけたいなあと思ったりすることってあります。 その場合にいままで書いた分全部に新たな引数を加えるなんてすごくイヤです。 というわけで、Javascriptでオーバーロードの真似事を実現するには、 argumentsオブジェクトのlengthによって場合分けをします。
arguments.length
argumentsオブジェクトは引数を表すオブジェクトです。 配列と同じようにlengthが取得できます。 例: function test(arg1,arg2){  switch (arguments.length) {  case 1: test1(arg1);  case 2: test2(arg1,arg2);  default

Comments 1

nyi  

cで言うところ、printfとかscanfみたいな実装ですね。

2008/09/15 (Mon) 12:26 | EDIT | REPLY |   

Leave a reply