JavaScript 1.5 non supporta i "named parameters" e nemmeno l'overload di una funzione. Giocando un po' è però possibile ottenere un surrogato degli stessi.
Es.
function AlertGenius(args)
{
var firstName, lastName;
switch (arguments.length)
{
case 1:
firstName = args.firstName;
lastName = args.lastName;
break;
case 2:
firstName = arguments[0];
lastName = arguments[1];
break;
default:
return;
}
alert("The genius is " + firstName + " " + lastName);
}
E' ora possibile invocare la funzione AlertGenius in due diversi modi:
AlertGenius( "Albert", "Einstein" );
oppure
AlertGenius( {lastName: "Einstein", firstName: "Albert"} );
Le due invocazioni producono lo stesso risultato.
In realtà la seconda chiamata è zucchero sintattico per il seguente codice:
function Person(firstName, lastName)
{
this.firstName = firstName;
this.lastName = lastName;
}
Person.prototype.firstName = "";
Person.prototype.lastName = "";
var p = new Person("Albert", "Einstein");
AlertGenius( p );
In sostanza la sintassi {lastName: "Einstein", firstName: "Albert"} permette di definire e istanziare un oggetto anonimo con due proprietà, questo è quello che viene passato alla funzione.