diff options
Diffstat (limited to 'node_modules/core-js/modules/es6.function.name.js')
-rw-r--r-- | node_modules/core-js/modules/es6.function.name.js | 25 |
1 files changed, 17 insertions, 8 deletions
diff --git a/node_modules/core-js/modules/es6.function.name.js b/node_modules/core-js/modules/es6.function.name.js index 0f10fc11f..f824d86d2 100644 --- a/node_modules/core-js/modules/es6.function.name.js +++ b/node_modules/core-js/modules/es6.function.name.js @@ -1,16 +1,25 @@ -var setDesc = require('./$').setDesc - , createDesc = require('./$.property-desc') - , has = require('./$.has') +var dP = require('./_object-dp').f + , createDesc = require('./_property-desc') + , has = require('./_has') , FProto = Function.prototype , nameRE = /^\s*function ([^ (]*)/ , NAME = 'name'; + +var isExtensible = Object.isExtensible || function(){ + return true; +}; + // 19.2.4.2 name -NAME in FProto || require('./$.descriptors') && setDesc(FProto, NAME, { +NAME in FProto || require('./_descriptors') && dP(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; + try { + var that = this + , name = ('' + that).match(nameRE)[1]; + has(that, NAME) || !isExtensible(that) || dP(that, NAME, createDesc(5, name)); + return name; + } catch(e){ + return ''; + } } });
\ No newline at end of file |