chunpin
8/26/2017 - 7:29 PM

librarySystem with dependencies

librarySystem with dependencies

(function (){
 var librayStorage = {};

 function librarySystem (librayName, dependenciesArrayOfString, callback){
  if(arguments.length > 1){
    // using an array of string finding the method(s) from librayStorage object , 
    // and assign it into dependenciesArrayOfFunction variable as an array of function.
    var dependenciesArrayOfFunction = dependenciesArrayOfString.map(function(dependency){
        if(librayStorage[dependency]){
          return librayStorage[dependency];
        } else {
          console.error('%c Can not find %c' + dependency + '%c function as dependency!', 'color:#FF0000','color:#FF7E7C', 'color:#FF0000');
        }
    });

    librayStorage[librayName] = callback.apply(librayStorage,dependenciesArrayOfFunction);

  } else {
        if(librayStorage[librayName]){
           return librayStorage[librayName];
        } else {
          console.error('%c Can not find %c' + librayName + '%c libray!', 'color:#FF0000','color:#FF7E7C', 'color:#FF0000');
        }
  }
 }

 window.librarySystem = librarySystem;

})();



librarySystem('name', [], function() {
 return 'Chun Pin';
});

librarySystem('company', [], function() {
 return 'Google';
});

librarySystem('workBlurb', ['name', 'company'], function(name, company) {
 return name + ' works at ' + company;
});

librarySystem('workBlurb'); // 'Chun Pin works at Google'