UNPKG

1.1 kBJavaScriptView Raw
1'use strict';
2var $ = require('../internals/export');
3var call = require('../internals/function-call');
4var isObject = require('../internals/is-object');
5var anObject = require('../internals/an-object');
6var isDataDescriptor = require('../internals/is-data-descriptor');
7var getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');
8var getPrototypeOf = require('../internals/object-get-prototype-of');
9
10// `Reflect.get` method
11// https://tc39.es/ecma262/#sec-reflect.get
12function get(target, propertyKey /* , receiver */) {
13 var receiver = arguments.length < 3 ? target : arguments[2];
14 var descriptor, prototype;
15 if (anObject(target) === receiver) return target[propertyKey];
16 descriptor = getOwnPropertyDescriptorModule.f(target, propertyKey);
17 if (descriptor) return isDataDescriptor(descriptor)
18 ? descriptor.value
19 : descriptor.get === undefined ? undefined : call(descriptor.get, receiver);
20 if (isObject(prototype = getPrototypeOf(target))) return get(prototype, propertyKey, receiver);
21}
22
23$({ target: 'Reflect', stat: true }, {
24 get: get
25});