1234567891011121314151617181920212223242526 |
- 'use strict';
- var DESCRIPTORS = require('../internals/descriptors');
- var FUNCTION_NAME_EXISTS = require('../internals/function-name').EXISTS;
- var uncurryThis = require('../internals/function-uncurry-this');
- var defineBuiltInAccessor = require('../internals/define-built-in-accessor');
-
- 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) {
- defineBuiltInAccessor(FunctionPrototype, NAME, {
- configurable: true,
- get: function () {
- try {
- return regExpExec(nameRE, functionToString(this))[1];
- } catch (error) {
- return '';
- }
- }
- });
- }
|