function myFunc(event, target, banned, handler){
var arglen = arguments.length;
var handler = arglen > 1 ? arguments[arglen-1] : undefined;
var banned = arglen > 3 ? arguments[2] : undefined;
var target = arglen > 2 ? arguments[1] : undefined;
console.log({
event:event,
target:target,
banned:banned,
handler:handler
});
}
myFunc('event', 'handler');
myFunc('event', 'target', 'handler');
myFunc('event', 'target', 'banned', 'handler');
var complex1 = new Complex(1,2);
var complex2 = new Complex(3,4);
var c3 = Complex.add(complex1, complex2);//сработает Complex.add = function(a, b)
var c4 = complex1.add(complex2);//сработает Complex.prototype.add = function(that)
var c5 = complex1.add(complex1, complex2);//сработает Complex.prototype.add = function(that) но параметр 2 просто проигнорируется и получим complex1 + complex1