Winning Arguments

So you wanted to beef up your JavaScript utility by adding a bunch of config options and now you have a constructor with 10 arguments?

Fortunately JavaScript does not support function overloading, so you only have to supply arguments up to the last non null value. Unfortunately, if you only want to provide arguments 1, 6, 7 and 10 you also need to specify a lot of null arguments in between – and you need to count the null arguments very carefully to be certain exactly which value you are assigning to which argument. And pity anyone who is trying to read your code.

function CleverThing(element, duration, rotation, suspension, gravitation, gradation, hesitation, gestation, scale, color) {
   this.element = element;
   this.duration = duration;
   this.rotation = rotation;
   ... ...
}

var newThing = new CleverThing('arrow', null, null, null, null, 80, 200, null, null, '#FF0000' );

Object literals to the rescue. Merge all your optional arguments into one, call it something like ‘options’, and assign attributes only as required…

function CleverThing(element, options) { this.element = element; this.duration = options.duration; this.rotation = options.rotation; … … } var newThing = new CleverThing( ‘arrow’, {gradation:80, hesitation:200, color:’#FF0000′} );

Now you only need pass what you need and anyone viewing the statement can plainly see the intention. Oh and of course you can now pass the options in any order.

About these ads

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s