es6.function.name.js 524 B

12345678910111213141516
  1. var setDesc = require('./$').setDesc
  2. , createDesc = require('./$.property-desc')
  3. , has = require('./$.has')
  4. , FProto = Function.prototype
  5. , nameRE = /^\s*function ([^ (]*)/
  6. , NAME = 'name';
  7. // 19.2.4.2 name
  8. NAME in FProto || require('./$.descriptors') && setDesc(FProto, NAME, {
  9. configurable: true,
  10. get: function(){
  11. var match = ('' + this).match(nameRE)
  12. , name = match ? match[1] : '';
  13. has(this, NAME) || setDesc(this, NAME, createDesc(5, name));
  14. return name;
  15. }
  16. });