JSFiddle - React, Tailwind, and code Playground

by Michael Russell

JavaScript

function myHandler(data, ctx) {
        console.log('myHandler():  bar: ' + this.bar); // <- must use `this`
        console.log('myHandler():  privateBar: ' + this.privateBar); // <- undefined because it's privately scoped
        console.log(JSON.stringify(data));
    }
    MySvcWrap = {
        doWork: function(p1, callback, scope) {
            var result = {
                colors: ['red', 'green'],
                name: 'Jones',
                what: p1
            };
            if (callback) {
                callback.call(scope || this, result, scope);
            }
        }
    }
    
    function lookup() {
        if(this == window) return lookup.call(lookup); // <- my hack'ish check
        
        var privateBar = 'private food'; // private local var
        this.bar = 'food'; // public local var
        MySvcWrap.doWork('thang', myHandler, this); // scope object is this
    }
    
    lookup();
    
    console.log('global space - bar: ' + this.bar);