Перегрузка методов


На первый взгляд задача очень не проста. Для перегрузки функций
можно поступить таким образом - сделать генератор функций, который
будет вызывать нужную анонимную фукнцию в зависимости от числа параметров:

function generator() {

    // Массив анонимных функций
    var m = [];

    for(var i=0; i<arguments.length; i++)
        if(typeof(arguments[i]) == "function")
            m[arguments[i].length] = arguments[i];

    return function() {
        return m[arguments.length].apply(this, arguments);
    }

}

var calcArea = generator(
    function (x, y) {
        return x*y;
    },
    function(x,y,z) {
        return x*y*z;
    }
);

var v1 = calcArea(3,4);
var v2 = calcArea(2,3,4);

* Перегрузка операций в JavaScript отсутствует