23 lines
673 B
JavaScript
23 lines
673 B
JavaScript
|
var DESCRIPTORS = require('../internals/descriptors');
|
||
|
var defineProperty = require('../internals/object-define-property').f;
|
||
|
|
||
|
var FunctionPrototype = Function.prototype;
|
||
|
var FunctionPrototypeToString = FunctionPrototype.toString;
|
||
|
var nameRE = /^\s*function ([^ (]*)/;
|
||
|
var NAME = 'name';
|
||
|
|
||
|
// Function instances `.name` property
|
||
|
// https://tc39.es/ecma262/#sec-function-instances-name
|
||
|
if (DESCRIPTORS && !(NAME in FunctionPrototype)) {
|
||
|
defineProperty(FunctionPrototype, NAME, {
|
||
|
configurable: true,
|
||
|
get: function () {
|
||
|
try {
|
||
|
return FunctionPrototypeToString.call(this).match(nameRE)[1];
|
||
|
} catch (error) {
|
||
|
return '';
|
||
|
}
|
||
|
}
|
||
|
});
|
||
|
}
|