UNPKG

1 kBJavaScriptView Raw
1var DESCRIPTORS = require('../internals/descriptors');
2var propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');
3var createPropertyDescriptor = require('../internals/create-property-descriptor');
4var toIndexedObject = require('../internals/to-indexed-object');
5var toPrimitive = require('../internals/to-primitive');
6var has = require('../internals/has');
7var IE8_DOM_DEFINE = require('../internals/ie8-dom-define');
8
9var nativeGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
10
11// `Object.getOwnPropertyDescriptor` method
12// https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptor
13exports.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]);
20};