6e8a5efc0373c00ca4d7f8be6d58c1713f7f6906832e147701f78ea0c1cd9fb396ad2eced120d336490864f0873b26f0a958408316256be83cef35ec75fd9a 936 B

12345678910111213141516171819202122
  1. 'use strict';
  2. var hasOwn = require('../internals/has-own-property');
  3. var isCallable = require('../internals/is-callable');
  4. var toObject = require('../internals/to-object');
  5. var sharedKey = require('../internals/shared-key');
  6. var CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');
  7. var IE_PROTO = sharedKey('IE_PROTO');
  8. var $Object = Object;
  9. var ObjectPrototype = $Object.prototype;
  10. // `Object.getPrototypeOf` method
  11. // https://tc39.es/ecma262/#sec-object.getprototypeof
  12. // eslint-disable-next-line es/no-object-getprototypeof -- safe
  13. module.exports = CORRECT_PROTOTYPE_GETTER ? $Object.getPrototypeOf : function (O) {
  14. var object = toObject(O);
  15. if (hasOwn(object, IE_PROTO)) return object[IE_PROTO];
  16. var constructor = object.constructor;
  17. if (isCallable(constructor) && object instanceof constructor) {
  18. return constructor.prototype;
  19. } return object instanceof $Object ? ObjectPrototype : null;
  20. };