let fn={}
fn.worker=(src)=>{
//inner.js or text or element
let is={},f=(d=>URL.createObjectURL(new Blob( [d], {type:"text\/javascript"} )));
is.element=function(o){return !!(o && o.nodeType === 1)};
is.url=(d=>!/\n|;/.test(d));
return new Worker( is.element(src)?f(src.textContent):is.url(src)?src:f(src) );
}
//fn.q=(d=>document.querySelector(d))
//var myWorker =fn.worker("onmessage = function(e) {...};")
//var myWorker =fn.worker('xyz.js')
var myWorker =fn.worker(fn.q('#w'))
<script type="text/plain" id="w">
onmessage = function(e) {
console.log('Message received from main script');
var workerResult = 'Result: ' + (e.data[0] * e.data[1]);
console.log('Posting message back to main script');
postMessage(workerResult);
}
</script>