s2d1ent
@s2d1ent
Специалист технической поддержки

Указание переменных через window?

Всем привет. Вообщем-то, уже пару месяцев изучаю JS, изучил основные методы в JQuery и маленько AJAX, но в самом JS как-то упустил из виду Promise. Так вот, скинул препод код на практике как пример, там я заметил такую непонятную штуку как указание переменных через window, если это так можно назвать. Вообщем, можете объяснить кака работают эти куски кода с window, в каких случаях стоит так писать и стоит ли так писать вообще ?
Сорян если в пояснении налил воды, сонный мальца. Заранее благодарю.
window. sheremet=()=>{
           if (window.time.length==0){
               return false;
           }else{
               console.log(new Map(window.time));
               let promise = new Promise((resolve, reject) => {
                   document.querySelector('.btn_practice.add_record').click();
                   setTimeout(() => {

                       // переведёт промис в состояние fulfilled с результатом "result"
                       resolve("result");
                   }, 1000);

               });

               promise
                   .then(
                   result => {
                       let state=true;
                       document.querySelector("#date_block > input[type=text]").value=window.time[0][0];

                       document.querySelector("#date_block > a").click();
                       setTimeout(() => {
                           return state;
                       }, 1000);

                   },
                   error => {
                       // вторая функция - запустится при вызове reject
                       alert("Rejected: " + error); // error - аргумент reject
                   }
               )
               .then(state=>{

                   setTimeout(() => {
                       document.querySelector('#practice_diary_filter tr:last-child .ico.edit').click();

                     return true;
                       }, 1000);
               })
               .then(state=>{

                   setTimeout(() => {
                       document.querySelector('#practice_diary_filter tr:last-child textarea[name="text"]').value=window.time[0][1];
                       window.time.shift();
                       document.querySelector('#practice_diary_filter tr:last-child .ico.edit').click();
                       window.sheremet();
                   }, 1000);
               });


           }

   }
       window.time=[
               ["27.11.2020",`Поиск Основных правил охраны труда и техники безопасности техника-программиста на сайте (ссылка на сайт: )
(См. Приложение А).
По данному материалу был создан плакат для отдела IT. 
(см. Приложение А).
По данному материалу была создана презентация (См. диск) (имя папки имя файла)`],
               ["28.11.2020",`Анализ сильных и слабых сторон проекта, создание предметной области.
(см. Приложение Б)`],
               ["30.11.2020",`Создания диаграммы классов и диаграммы объектов по данному заданию.
Создание документации по создания ПО для “Учета нарушений правил ПДД”(см. Приложение В)`],
               ["01.12.2020",`Составление диаграммы прецендентов и диаграммы последовательностей относительно технического задания. (
Оформление внешней спецификации к задаче, на основе технического задания Учета нарушений правил ПДД (см. Приложение Г)`],
               ["02.12.2020",`
Создания диаграммы состояния 
Создание “Пояснительной записки” Учета нарушений правил ПДД (см. Приложение Д)`],
               ["03.12.2020",`Написание основы ПО:, написание главной страницы.
Создания скрипта для отправки данных в базу данных
(см. Приложение Е)`],
               ["04.12.2020",`Создание страницы поиска информации о пользователе.
Написание скрипта для поиска информации в базе данных
(см. Приложение Ж)`],
               ["05.12.2020",`Создание страницы админ панели и написание функций администрирования и написания их графического оформления.
(см. Приложение З)`],
               ["06.12.2020",`Написание кода для обратной связи с пользователем сайта и написания графического оформления.
(см. Приложение З)
`],
               ["07.12.2020",`Написание кода на HTML+PHP. для обратной связи с администрации(см. Приложение И)`],
               ["08.12.2020",`Установка виртуальной машины на системе Ubuntu.; интеграция ОС как внешнего сервера
(см. Приложение К)
`],
               ["09.12.2020",`Написание кода на NodeJS и JS.
Проверка кода на работоспособность.
Интеграция модулей NodeJS, Express, Git, NPM, 
(см. Приложение К)`],
               ["10.12.2020",`Написание тестовых модулей на проверку работы основного проекта.
(см. Приложение Л)`],
           ];
window. sheremet();
  • Вопрос задан
  • 703 просмотра
Решения вопроса 1
alvvi
@alvvi
export default apathy;
Вызовы типа
window.property = 'string'
window.function = () => 'hey there'

это по сути объявление глобальных переменных, которые будут доступны всем скриптам. Используется на практике в случае, где данные операции/свойства необходимо объявить на сервере.

Например, таким образом можно записать в объект window свойство с каким-нибудь JSON-конфигом из PHP или другого серверного языка или просто передать информацию из серверного языка в качестве переменной.

Использовать такой подход для объявления переменных в остальных случаях крайне не рекомендуется. В данном случае преподователь вам дает скорее вредный нежели полезный пример, подобный код можно написать без глобальных переменных/свойств глобального объекта.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@0ffff0
Когда пишем подобный учебный скрипт, можно не объявлять переменные через var, let или const, а назначать как свойство объекта windows, чтоб не путаться где какая переменная доступна и где чья область видимости, когда объявляем переменные на лету, работать будет, но перегружает глобальную область.
Поэтому лучше сразу создать свой специальный объект
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы