オーバーロード

JavaScriptでは、関数オーバーロードの仕組みは基本的にはないらしい。Javaから機械的に移植しようとするときにはちょっときつい。

ただし可変個引数は可能らしく、それでなんとかするのが常套手段らしい(参考ページ:オブジェクトなJavaScriptの基礎講座「オーバーライドと多重定義について」)。

  • arguments ... 引数が格納されているオブジェクト
    • arguments.length ... 引数の個数
    • arguments[n] ... n番目の引数(0始まり)
  • サンプル
function GenericPoint() {
    if(arguments.length >= 2) {
        this.x = arguments[0];
        this.y = arguments[1];
    } else {
        this.x = 0;
        this.y = 0;
    }
}

var g1 = new GenericPoint();        // g1.x == 0, g1.y == 0
var g2 = new GenericPoint(5, 10);   // g2.x == 5, g2.y == 10