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 |
|
9 | var nativeGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
|
10 |
|
11 |
|
12 |
|
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) { }
|
19 | if (has(O, P)) return createPropertyDescriptor(!propertyIsEnumerableModule.f.call(O, P), O[P]);
|
20 | };
|