123456789101112131415161718192021222324252627282930313233 |
- 'use strict';
-
- 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;
|