Function Block (func, tag) {VaR _ r_function =/^ function \ B \ s * ([\ $ \ s] *) \ s *\(/; vaR _ r_codebody =/[^ {] * \ {([\ D] *) \} $ /; vaR _ r_params =/[^ \ (] * \ ([^ \)] *) \) [\ D] */; tag = (TAG | 'body '). tolowercase (); with (func. tostring () {return (TAG = 'body ')? Replace (_ r_codebody, '$ 1'). Replace (/^ \ s * | \ s * $/g, ''): (TAG = 'param ')? (TAG = Replace (_ r_params, '$1 '))? Tag. Split (/[, \ s] +/): []): (TAG = 'name ')? Match (_ r_function) [1]: (TAG = 'scope ')? '[Function (' + arguments. callee (func, 'param') + ') {\ n' + arguments. callee (func, 'body') + '\ n}] [0]': (TAG = 'anonus us ')? Function. apply (this, arguments. callee (func, 'param '). concat (arguments. callee (func, 'body'): 'block () with bad arguments. ';}}; var A = function () {alert (3333)}; alert (Block (A, 'anonus us '))
Get function name
var fname = function (f) {return F. Name;} If (! ("Name" in function. prototype) {fname = function (f) {return string (f ). match (/^ function \ s * ([^)] *) \ (/) [1] ;}