1 | 'use strict';
|
2 | var $ = require('../internals/export');
|
3 | var global = require('../internals/global');
|
4 | var defineBuiltInAccessor = require('../internals/define-built-in-accessor');
|
5 | var DESCRIPTORS = require('../internals/descriptors');
|
6 |
|
7 | var $TypeError = TypeError;
|
8 |
|
9 | var defineProperty = Object.defineProperty;
|
10 | var INCORRECT_VALUE = global.self !== global;
|
11 |
|
12 |
|
13 |
|
14 | try {
|
15 | if (DESCRIPTORS) {
|
16 |
|
17 | var descriptor = Object.getOwnPropertyDescriptor(global, 'self');
|
18 |
|
19 |
|
20 | if (INCORRECT_VALUE || !descriptor || !descriptor.get || !descriptor.enumerable) {
|
21 | defineBuiltInAccessor(global, 'self', {
|
22 | get: function self() {
|
23 | return global;
|
24 | },
|
25 | set: function self(value) {
|
26 | if (this !== global) throw new $TypeError('Illegal invocation');
|
27 | defineProperty(global, 'self', {
|
28 | value: value,
|
29 | writable: true,
|
30 | configurable: true,
|
31 | enumerable: true
|
32 | });
|
33 | },
|
34 | configurable: true,
|
35 | enumerable: true
|
36 | });
|
37 | }
|
38 | } else $({ global: true, simple: true, forced: INCORRECT_VALUE }, {
|
39 | self: global
|
40 | });
|
41 | } catch (error) { }
|