object-get-own-property-descriptor.js 1001 B

1234567891011121314151617181920
  1. var DESCRIPTORS = require('../internals/descriptors');
  2. var propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');
  3. var createPropertyDescriptor = require('../internals/create-property-descriptor');
  4. var toIndexedObject = require('../internals/to-indexed-object');
  5. var toPrimitive = require('../internals/to-primitive');
  6. var has = require('../internals/has');
  7. var IE8_DOM_DEFINE = require('../internals/ie8-dom-define');
  8. var nativeGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
  9. // `Object.getOwnPropertyDescriptor` method
  10. // https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptor
  11. exports.f = DESCRIPTORS ? nativeGetOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {
  12. O = toIndexedObject(O);
  13. P = toPrimitive(P, true);
  14. if (IE8_DOM_DEFINE) try {
  15. return nativeGetOwnPropertyDescriptor(O, P);
  16. } catch (error) { /* empty */ }
  17. if (has(O, P)) return createPropertyDescriptor(!propertyIsEnumerableModule.f.call(O, P), O[P]);
  18. };