es.reflect.get.js 1.0 KB

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