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');
9 var nativeGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
11 // `Object.getOwnPropertyDescriptor` method
12 // https://tc39.es/ecma262/#sec-object.getownpropertydescriptor
13 exports.f = DESCRIPTORS ? nativeGetOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {
14 O = toIndexedObject(O);
15 P = toPrimitive(P, true);
16 if (IE8_DOM_DEFINE) try {
17 return nativeGetOwnPropertyDescriptor(O, P);
18 } catch (error) { /* empty */ }
19 if (has(O, P)) return createPropertyDescriptor(!propertyIsEnumerableModule.f.call(O, P), O[P]);