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);
});