You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
24 lines
1.1 KiB
24 lines
1.1 KiB
var $ = require('../internals/export'); |
|
var call = require('../internals/function-call'); |
|
var isObject = require('../internals/is-object'); |
|
var anObject = require('../internals/an-object'); |
|
var isDataDescriptor = require('../internals/is-data-descriptor'); |
|
var getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor'); |
|
var getPrototypeOf = require('../internals/object-get-prototype-of'); |
|
|
|
// `Reflect.get` method |
|
// https://tc39.es/ecma262/#sec-reflect.get |
|
function get(target, propertyKey /* , receiver */) { |
|
var receiver = arguments.length < 3 ? target : arguments[2]; |
|
var descriptor, prototype; |
|
if (anObject(target) === receiver) return target[propertyKey]; |
|
descriptor = getOwnPropertyDescriptorModule.f(target, propertyKey); |
|
if (descriptor) return isDataDescriptor(descriptor) |
|
? descriptor.value |
|
: descriptor.get === undefined ? undefined : call(descriptor.get, receiver); |
|
if (isObject(prototype = getPrototypeOf(target))) return get(prototype, propertyKey, receiver); |
|
} |
|
|
|
$({ target: 'Reflect', stat: true }, { |
|
get: get |
|
});
|
|
|