Velocity Reviews

Velocity Reviews (http://www.velocityreviews.com/forums/index.php)
-   Javascript (http://www.velocityreviews.com/forums/f68-javascript.html)
-   -   Minimising duplication using ((){})(); (http://www.velocityreviews.com/forums/t936511-minimising-duplication-using.html)

Andrew Poulos 07-16-2008 01:03 AM

Minimising duplication using ((){})();
 
I'm building some code that using this type of structure to interface to
SCORM compliant LMS:

var API = (function() {
// Private variables
var started = false;

// Private methods

// Public methods
return {
// Initialise
Initialize : function() {
started = true;

}
}
})();


Unfortunately there are two common standards that need to be satisfied
and I was hoping to do it with minimal duplication.

My problems are these:

1. Some LMS will be referring to 'API' and some will be expecting the
name 'API_1484_11'. If I add this line

var API_1484_11 = API;

does that mean, say, that I could call API.Initialize() and it would be
the same as calling API_1484_11.Initialize()?

2. The public methods are identical in content but need to have slightly
different names for 'API' and 'API_1484_11'. For example, 'Initialize'
and 'LMSInitialize'. How can I achieve this without duplicating the
entire method?

Andrew Poulos





Lasse Reichstein Nielsen 07-16-2008 05:08 AM

Re: Minimising duplication using ((){})();
 
Andrew Poulos <ap_prog@hotmail.com> writes:

....
> 1. Some LMS will be referring to 'API' and some will be expecting the
> name 'API_1484_11'. If I add this line
>
> var API_1484_11 = API;
>
> does that mean, say, that I could call API.Initialize() and it would
> be the same as calling API_1484_11.Initialize()?


Yes. They not only behave the same, they are the same: The same method
called on the same object.

> 2. The public methods are identical in content but need to have
> slightly different names for 'API' and 'API_1484_11'. For example,
> 'Initialize' and 'LMSInitialize'. How can I achieve this without
> duplicating the entire method?


API.LMSInitialize = API.Initialize;
var API_1484_11 = API;

API.Initialize();
API_1484_11.LMSInitialize(); // exactly the same

.... as long as you don't have the same method name meaning different
things in the different APIs.

/L
--
Lasse Reichstein Nielsen
DHTML Death Colors: <URL:http://www.infimum.dk/HTML/rasterTriangleDOM.html>
'Faith without judgement merely degrades the spirit divine.'


All times are GMT. The time now is 07:59 AM.

Powered by vBulletin®. Copyright ©2000 - 2014, vBulletin Solutions, Inc.
SEO by vBSEO ©2010, Crawlability, Inc.