| | |
| | | var DESCRIPTORS = require('../internals/descriptors'); |
| | | var FUNCTION_NAME_EXISTS = require('../internals/function-name').EXISTS; |
| | | var uncurryThis = require('../internals/function-uncurry-this'); |
| | | var defineProperty = require('../internals/object-define-property').f; |
| | | |
| | | var FunctionPrototype = Function.prototype; |
| | | var FunctionPrototypeToString = FunctionPrototype.toString; |
| | | var nameRE = /^\s*function ([^ (]*)/; |
| | | var functionToString = uncurryThis(FunctionPrototype.toString); |
| | | var nameRE = /function\b(?:\s|\/\*[\S\s]*?\*\/|\/\/[^\n\r]*[\n\r]+)*([^\s(/]*)/; |
| | | var regExpExec = uncurryThis(nameRE.exec); |
| | | var NAME = 'name'; |
| | | |
| | | // Function instances `.name` property |
| | |
| | | configurable: true, |
| | | get: function () { |
| | | try { |
| | | return FunctionPrototypeToString.call(this).match(nameRE)[1]; |
| | | return regExpExec(nameRE, functionToString(this))[1]; |
| | | } catch (error) { |
| | | return ''; |
| | | } |