JSFiddle - React, Tailwind, and code Playground
by 2ming
JavaScript
var _ = function(obj) {
if (obj instanceof _) return obj;
if (!(this instanceof _)) return new _(obj);
this._wrapped = obj;
};
_.each = function(obj, iteratee) {
var i, length;
for (i = 0, length = obj.length; i < length; i++) {
iteratee(obj[i], i, obj);
}
return obj;
};
_.map = function(obj, iteratee, context) {
var length = obj.length,
results = Array(length);
for (var index = 0; index < length; index++) {
results[index] = iteratee(obj[index], index, obj);
}
return results;
};
var chainResult = function(instance, obj) {
return instance._chain ? _(obj).chain() : obj;
};
_.chain = function(obj) {
var instance = _(obj);
instance._chain = true;
return instance;
};
function mixin(){
_.each(['chain', 'each', 'map'], function(name) {
var func = _[name]
_.prototype[name] = function() {
var args = [this._wrapped];
[].push.apply(args, arguments);
return chainResult(this, func.apply(_, args));
};
});
}
mixin()
_.chain([1,2,3]).map(function(a){ return a * 2}).each(console.log)