JSFiddle - React, Tailwind, and code Playground

JavaScript

function getCallerName(ex) {
    // parse the call stack to find name of caller; assumes called from object property
    // todo: replace with regex (left as exercise for the reader)
    // this works in chrome on win7. other browsers may format differently(?) but not tested.
    // easy enough to extend this concept to be browser-specific if rules are known.
    // this is only for educational purposes; I would not do this in production code.
    var stack = ex.stack.toString();
    var idx = stack.indexOf('\n');
    var lines = ex.stack.substring(idx + 1);
    var objectSentinel = 'Object.';
    idx = lines.indexOf(objectSentinel);
    var line = lines.substring(idx + objectSentinel.length);
    idx = line.indexOf(' ');
    var callerName = line.substring(0, idx);
    return callerName;
}

var Factory = {
    getFunction: function () {
        return function () {
            var callName = "";
            try {
                throw up; // you don't *have* to throw to get stack trace, but it's more fun!
            } catch (ex) {
                callName = getCallerName(ex);
            }
            alert(callName);
        };
    }
}

var obj1 = {
    'callName2': Factory.getFunction(),
        'callName3': Factory.getFunction()
};

var obj2 = {
    'callName4': Factory.getFunction(),
        'callName5': Factory.getFunction()
};

obj1.callName2(); // should alert 'callName2' 
obj1.callName3(); // should alert 'callName3'
obj2.callName4(); // should alert 'callName4'
obj2.callName5(); // should alert 'callName5'