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'