Hola:
 
Sobre el número de argumentos podría simplemente usar un switch: 
function x() {
	switch (arguments.length) {
		case 0: alert(arguments.length);
		break; 
		case 1: alert(arguments.length);
		break; 
		default: alert('sin definir');
		break;
	}
}
...  
<body onload="x(); x(1); x(1,2,3)"> 
Pero me temo que el ejemplo de JavierB (¡Hola 

 !) es más descriptivo... 
 
Lo que sí es que se pueden usar métodos propios de objetos y/o redefinirlos 
String.prototype.sort = function() {
 t = this.split(""); t.sort(); return t.join("");
} 
saludos