diff options
Diffstat (limited to 'node_modules/es-abstract/2015/IsConstructor.js')
-rw-r--r-- | node_modules/es-abstract/2015/IsConstructor.js | 40 |
1 files changed, 0 insertions, 40 deletions
diff --git a/node_modules/es-abstract/2015/IsConstructor.js b/node_modules/es-abstract/2015/IsConstructor.js deleted file mode 100644 index 8ba9fe5..0000000 --- a/node_modules/es-abstract/2015/IsConstructor.js +++ /dev/null @@ -1,40 +0,0 @@ -'use strict'; - -var GetIntrinsic = require('../GetIntrinsic.js'); - -var $construct = GetIntrinsic('%Reflect.construct%', true); - -var DefinePropertyOrThrow = require('./DefinePropertyOrThrow'); -try { - DefinePropertyOrThrow({}, '', { '[[Get]]': function () {} }); -} catch (e) { - // Accessor properties aren't supported - DefinePropertyOrThrow = null; -} - -// https://www.ecma-international.org/ecma-262/6.0/#sec-isconstructor - -if (DefinePropertyOrThrow && $construct) { - var isConstructorMarker = {}; - var badArrayLike = {}; - DefinePropertyOrThrow(badArrayLike, 'length', { - '[[Get]]': function () { - throw isConstructorMarker; - }, - '[[Enumerable]]': true - }); - - module.exports = function IsConstructor(argument) { - try { - // `Reflect.construct` invokes `IsConstructor(target)` before `Get(args, 'length')`: - $construct(argument, badArrayLike); - } catch (err) { - return err === isConstructorMarker; - } - }; -} else { - module.exports = function IsConstructor(argument) { - // unfortunately there's no way to truly check this without try/catch `new argument` in old environments - return typeof argument === 'function' && !!argument.prototype; - }; -} |