Как тотально изолировать мой скрипт от глобальных функций и переменных (window)?

Хочу в браузерном JS использовать свой глобальный объект вместо window. Мой скрипт не должен иметь доступ к функциям и классам из window.
Как это сделать?

Создаёшь новый скоуп с var window = undefined;
и в нём запускаешь свой скрипт

(window => {
// твой чудо-код здесь
})(Object(null));

Думаю что функции из глобала все равно будут доступны (надо проверять, мне лень). Потому что локальное переопределение рефа на глобальный объект, не меняет сам объект. Это все равно что let obj1 = { foo: 'bar' }, obj2 = obj1; obj2 = {}; // последнее выражение не влияет на объект, на который указывает obj1.
А переопределить глобал, вродекаг нереально. Скрипт ведь в нем выполняется, фактически.

Добавить комментарий