JSFiddle - React, Tailwind, and code Playground

by Robodude

JavaScript

var define = function(arr, func){
    var params = {};
    for (var i = 0, l = arr.length; i < l; i++)
    {
        if (arr[i] === "one"){
            params[i] = function(){
                return "valueOfAFunction"
            }; 
        }
        else if (arr[i] === "two"){
            params[i] = ["an", "array"]; 
        }
        else {
            params[i] = {
                id: 1,
                name: "number3"
            };
        }
    }

    func(params[0], params[1], params[2]);
};

var DependencyHelper = function(){
	var self = this;
    var deps = [];

    self.add = function(path, value){
        deps.push({
        	path: path,
            value: value
        });
        
        return self;
    };
    
    self.getPaths = function(){
        return deps.map(function(d){ return d.path; });
    };
    
    self.processArguments = function(context, args){
		
        for (var i = 0, l = args.length; i < l; i++)
        {
            context[deps[i].value] = args[i];
        }
        
        return context;
    };
    
    return self;
};

console.log("+++ traditional +++");

define(["one", "two", "three"], function(a, b, c){
    console.log("one/a:", a());
    console.log("two/b:", b);
    console.log("three/c:", c);
});
console.log("");
console.log("+++ dependency helper +++");

var dh = new DependencyHelper().add("three", "c").add("one", "a").add("two", "b");

define(dh.getPaths(), function(){
    var obj = dh.processArguments({}, arguments);
    
    console.log("one/a:", obj.a());
    console.log("two/b:", obj.b);
    console.log("three/c:", obj.c);
});