Spaces:
Sleeping
Sleeping
| ; | |
| var GetIntrinsic = require('get-intrinsic'); | |
| var $defineProperty = GetIntrinsic('%Object.defineProperty%', true); | |
| var hasPropertyDescriptors = function hasPropertyDescriptors() { | |
| if ($defineProperty) { | |
| try { | |
| $defineProperty({}, 'a', { value: 1 }); | |
| return true; | |
| } catch (e) { | |
| // IE 8 has a broken defineProperty | |
| return false; | |
| } | |
| } | |
| return false; | |
| }; | |
| hasPropertyDescriptors.hasArrayLengthDefineBug = function hasArrayLengthDefineBug() { | |
| // node v0.6 has a bug where array lengths can be Set but not Defined | |
| if (!hasPropertyDescriptors()) { | |
| return null; | |
| } | |
| try { | |
| return $defineProperty([], 'length', { value: 1 }).length !== 1; | |
| } catch (e) { | |
| // In Firefox 4-22, defining length on an array throws an exception. | |
| return true; | |
| } | |
| }; | |
| module.exports = hasPropertyDescriptors; | |