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}}));