Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- (function() {
- var libraryStorage = {};
- // librarySystem now takes three arguments, including dependencyNames
- function librarySystem(libraryName, dependencyNames, callback) {
- if (arguments.length > 1) { // Create case
- var dependencies = [];
- // For each dependency name, use librarySystem to return the
- // corresponding library and push it to the dependencies array.
- dependencyNames.forEach(function(name) {
- dependencies.push(librarySystem(name));
- });
- // Unpack dependencies into callback arguments using spread (...) syntax
- libraryStorage[libraryName] = callback(...dependencies);
- } else { // Use case
- return libraryStorage[libraryName];
- }
- }
- window.librarySystem = librarySystem;
- })();
- // Usage:
- // 1. Create our libraries:
- librarySystem('name', [], function() {
- return 'Gordon';
- });
- librarySystem('company', [], function() {
- return 'Watch and Code';
- });
- librarySystem('workBlurb', ['name', 'company'], function(name, company) {
- return name + ' works at ' + company;
- });
- // 2. Ask librarySystem to return our 'workBlurb' library, which depends on
- // the 'name' and 'company' libraries.
- librarySystem('workBlurb'); // 'Gordon works at Watch and Code'
Add Comment
Please, Sign In to add comment