object-define-property.js 927 B

1234567891011121314151617181920212223
  1. var global = require('../internals/global');
  2. var DESCRIPTORS = require('../internals/descriptors');
  3. var IE8_DOM_DEFINE = require('../internals/ie8-dom-define');
  4. var anObject = require('../internals/an-object');
  5. var toPropertyKey = require('../internals/to-property-key');
  6. var TypeError = global.TypeError;
  7. // eslint-disable-next-line es/no-object-defineproperty -- safe
  8. var $defineProperty = Object.defineProperty;
  9. // `Object.defineProperty` method
  10. // https://tc39.es/ecma262/#sec-object.defineproperty
  11. exports.f = DESCRIPTORS ? $defineProperty : function defineProperty(O, P, Attributes) {
  12. anObject(O);
  13. P = toPropertyKey(P);
  14. anObject(Attributes);
  15. if (IE8_DOM_DEFINE) try {
  16. return $defineProperty(O, P, Attributes);
  17. } catch (error) { /* empty */ }
  18. if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported');
  19. if ('value' in Attributes) O[P] = Attributes.value;
  20. return O;
  21. };