text: var setDesc    = require('./$').setDesc
    , createDesc = require('./$.property-desc')
    , has        = require('./$.has')
    , FProto     = Function.prototype
    , nameRE     = /^\s*function ([^ (]*)/
    , NAME       = 'name';
  // 19.2.4.2 name
  NAME in FProto || require('./$.descriptors') && setDesc(FProto, NAME, {
    configurable: true,
    get: function(){
      var match = ('' + this).match(nameRE)
        , name  = match ? match[1] : '';
      has(this, NAME) || setDesc(this, NAME, createDesc(5, name));
      return name;
    }
  });