12345678910111213141516171819202122232425262728293031 |
- 'use strict';
- var DESCRIPTORS = require('../internals/descriptors');
- var defineBuiltInAccessor = require('../internals/define-built-in-accessor');
- var isObject = require('../internals/is-object');
- var isPossiblePrototype = require('../internals/is-possible-prototype');
- var toObject = require('../internals/to-object');
- var requireObjectCoercible = require('../internals/require-object-coercible');
-
- // eslint-disable-next-line es/no-object-getprototypeof -- safe
- var getPrototypeOf = Object.getPrototypeOf;
- // eslint-disable-next-line es/no-object-setprototypeof -- safe
- var setPrototypeOf = Object.setPrototypeOf;
- var ObjectPrototype = Object.prototype;
- var PROTO = '__proto__';
-
- // `Object.prototype.__proto__` accessor
- // https://tc39.es/ecma262/#sec-object.prototype.__proto__
- if (DESCRIPTORS && getPrototypeOf && setPrototypeOf && !(PROTO in ObjectPrototype)) try {
- defineBuiltInAccessor(ObjectPrototype, PROTO, {
- configurable: true,
- get: function __proto__() {
- return getPrototypeOf(toObject(this));
- },
- set: function __proto__(proto) {
- var O = requireObjectCoercible(this);
- if (isPossiblePrototype(proto) && isObject(O)) {
- setPrototypeOf(O, proto);
- }
- }
- });
- } catch (error) { /* empty */ }
|