JSFiddle - React, Tailwind, and code Playground

by slace

JavaScript

var dataGen = (function() {
    return {
        prepare: function(obj) {
            function foo() {
                var props = {},
                    values = {},
                    num = 0;
                for(var prop in obj) {
                    if(obj.hasOwnProperty(prop)) {
                        props[prop] = obj[prop];
                    }
                }
                var bar = {
                    num: function(x) {
                        num = x;
                        return bar;  
                    },
                    set: function(key, value) {
                        if(props[key]) {
                            values[key] = value;
                        }
                        return bar;
                    },
                    make: function() {
                        var x = num,
                            ret = [];
                        while(x--) {
                            var baz = {};
                            for(var prop in props) {
                                if(props.hasOwnProperty(prop)) {
                                    baz[prop] = values[prop] || props[prop];
                                }
                            }
                            ret.push(baz);
                        }
                        console.log(ret);
                        return ret;
                    }
                };
                return bar;
            }
            return new foo();
        }
    };
})();

var foo = dataGen.prepare({ foo: 'bar' }).num(5).set('foo', 'woo').make();
for(var i = 0, l = foo.length; i<l; i++) {
    console.log(foo[i].foo);
}