JSFiddle - React, Tailwind, and code Playground

by ariehg

JavaScript

;
(function() {

    function createOverride(arr) {
        return function() {
            var i, l;
            for (i = 0, l = arr.length; i < l; i++) {
                if (arr[i].length == arguments.length) return (arr[i].apply(this, arguments));
            }
            return this;
        }
    }

    Object.override = function(obj, name, fn) {
        var args = [];
        switch (typeOf(fn)) {
        case 'function':
            args = [fn];
            break;
        default:
            args = fn;
        }
        if (name in obj.prototype) args.unshift(obj[name]);

        obj[name] = createOverride(args);
    };

})();

function a(){}
a.prototype.a = function(a){console.log(a);};

Object.override(a,'a',function(a,b){
    console.log(a,b);
});

var b = new a;

b.a('a');
b.a('b','a');