JSFiddle - React, Tailwind, and code Playground
JavaScript
var assign = function(role) {
var cacheName = "__ methpd Cahce";
return {
to: function(rolePlayer) {
var cache, unbind;
for (var prop in role) {
if (role.hasOwnProperty(prop)) {
if (rolePlayer.hasOwnProperty(prop)) {
if (!rolePlayer[cacheName]) {
rolePlayer[cacheName] = {};
}
rolePlayer[cacheName][prop] = rolePlayer[prop];
}
rolePlayer[prop] = function() {
return role[prop].apply(rolePlayer, arguments);
};
}
}
unbind = rolePlayer.unbind;
if(unbind) {
cache.unbind = unbind;
}
rolePlayer.unbind = function() {
var prop, cache = rolePlayer[cacheName];
for (prop in role) {
if (role.hasOwnProperty(prop) && rolePlayer.hasOwnProperty(prop)) {
delete rolePlayer[prop];
}
}
delete rolePlayer.unbind;
if (cache) {
for (var prop in cache) {
rolePlayer[prop] = cache[prop];
}
}
};
return rolePlayer;
}
};
},
createContext = function (context){
return function(){
var args = arguments,
ctx = context.apply(this,arguments);
ctx.unbind = function() {
var i,len,arg;
for(i=0, len = args.length; i<len; i += 1) {
arg = args[i];
arg.unbind && arg.unbind();
}
};
return ctx
};
}
moneyTransfer = createContext(function(sourcePlayer, destinationPlayer, amount) {
var source = {
withdraw: function() {
var text =...