JavaScript doesn't provide a native method to get the name of a function. Some browsers have implemented a name
property attached to the Function
object, but this doesn't work in a cross-browser fashion. So far, we've forced to augment the basic Function
object to get the desired result. The code is as follows:
if(Function.prototype.getFuncName !== 'function') { Function.prototype.getFuncName = function() { var name = ''; var self = this; var string = self.toString(); var sanitized = string.replace(/\s+/g, ''). replace('function', ''). replace('(', ''). replace(')', ''); var re = /.+\{/; var matches = sanitized.match(re); name = matches[0].replace('{', ''); return name; }; }
We use the string representation of a function and a couple of regular expressions to extract the function name. A simple test:
window.onload = function() { function func() { alert('OK'); } function methodForTest () { return; } alert(func.getFuncName()); // func alert(methodForTest.getFuncName()); //methodForTest };
You can see the demo below.
very basic js tip, thank you very much for sharing.