12345678910111213141516171819202122232425 |
- 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 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
- // https://tc39.es/ecma262/#sec-function-instances-name
- if (DESCRIPTORS && !FUNCTION_NAME_EXISTS) {
- defineProperty(FunctionPrototype, NAME, {
- configurable: true,
- get: function () {
- try {
- return regExpExec(nameRE, functionToString(this))[1];
- } catch (error) {
- return '';
- }
- }
- });
- }
|