Spaces:
Configuration error
Configuration error
; | |
var supportsDescriptors = require('define-properties').supportsDescriptors; | |
var functionsHaveNames = require('functions-have-names')(); | |
var getPolyfill = require('./polyfill'); | |
var defineProperty = Object.defineProperty; | |
var TypeErr = TypeError; | |
module.exports = function shimName() { | |
var polyfill = getPolyfill(); | |
if (functionsHaveNames) { | |
return polyfill; | |
} | |
if (!supportsDescriptors) { | |
throw new TypeErr('Shimming Function.prototype.name support requires ES5 property descriptor support.'); | |
} | |
var functionProto = Function.prototype; | |
defineProperty(functionProto, 'name', { | |
configurable: true, | |
enumerable: false, | |
get: function () { | |
var name = polyfill.call(this); | |
if (this !== functionProto) { | |
defineProperty(this, 'name', { | |
configurable: true, | |
enumerable: false, | |
value: name, | |
writable: false | |
}); | |
} | |
return name; | |
} | |
}); | |
return polyfill; | |
}; | |