JSFiddle - React, Tailwind, and code Playground

JavaScript

ObjectTest1 = (function() {

    var init = function() {
        this.callback = null;
    }

    init.prototype = {
        setCallback: function(callback) {
            this.callback = callback; // O CALLBACK DEFINIDO AQUI É init.prototype.methodTest2 PERTENCENTE AO ObjectTest2
        },
        applyCallback: function() {
            if (typeof this.callback == 'function') {
                this.callback(); // CHAMADA NORMAL DE init.prototype.methodTest2 DO OBJETO ObjectTest2
            }
        }
    }

    return init;
}());

ObjectTest2 = (function() {
    var self;
    var init = function() {
        self = this;
    }

    init.prototype = {
        methodTest1: function() {
            console.log('methodTest1');
        },
        methodTest2: function() {
            console.log('methodTest2');
            if (typeof self.methodTest1 != 'undefined') { // ESTE METODO NÃO EXISTE NO ObjectTest1 POIS ELE É DO ObjectTest2
                self.methodTest1();
            } else {
                console.log('ERROR');
            }
        }
    }
    var newInit = new init;
    return newInit;
}());

var o = new ObjectTest1();
o.setCallback(ObjectTest2.methodTest2);
o.applyCallback();