JSFiddle - React, Tailwind, and code Playground

JavaScript

var fn = ( function(){
    var ffn = Function.apply( this, arguments ) ;
    var init = this;
    return ( function( ffn ){
        alert( '1: '+init )
        alert( '2: '+this )
        var zfn = function(){
            alert( '3: '+init )
            alert( '4: '+this )
            return ffn.apply( init, arguments );
        };
        return zfn;
    }).call( init, ffn );
} ).apply( 456, [ 'a', 'b', ' alert(a+b); alert( "this: " + this ); return this; ' ] );

alert( 'result: ' + fn.call( 123, 5, 5 ) );