var global = require('../internals/global');
|
var hasOwn = require('../internals/has-own-property');
|
var isCallable = require('../internals/is-callable');
|
var toObject = require('../internals/to-object');
|
var sharedKey = require('../internals/shared-key');
|
var CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');
|
|
var IE_PROTO = sharedKey('IE_PROTO');
|
var Object = global.Object;
|
var ObjectPrototype = Object.prototype;
|
|
// `Object.getPrototypeOf` method
|
// https://tc39.es/ecma262/#sec-object.getprototypeof
|
module.exports = CORRECT_PROTOTYPE_GETTER ? Object.getPrototypeOf : function (O) {
|
var object = toObject(O);
|
if (hasOwn(object, IE_PROTO)) return object[IE_PROTO];
|
var constructor = object.constructor;
|
if (isCallable(constructor) && object instanceof constructor) {
|
return constructor.prototype;
|
} return object instanceof Object ? ObjectPrototype : null;
|
};
|