JSFiddle - React, Tailwind, and code Playground

by ryanwheale

JavaScript

var strFn = '(function() {' +
'   console.log("evaluated log:", prop1.prop2);' +
'   return prop1.prop2;' +
'})()';

var engine = {
    evaluate: function(strInput, obj) {
        var fnBody = '';
        for(var prop in obj) {
            fnBody += "var " + prop + "=" + JSON.stringify(obj[prop]) + ";";
        }
        return (new Function(fnBody + 'return ' + strInput))();
    }
};

console.log("first run");
console.log(engine.evaluate('prop1.prop2', {prop1: {prop2: 3}}));

console.log("second run");
console.log(engine.evaluate(strFn, {prop1: {prop2: 3}}));