проверка существования js-класса на этапе инициалиации
Мое почтение
Вопрос у меня возник следующий. Как на нативном js написать проверку, существует ли вообще js-класс или нет? Можно скрипт подрубить в 1-м месте и его использовать, но условимся, что:
Поэтому хочется понять, как происходит проверка существования класса на этапе объявления объекта? window.addEventListener("load", (event) => { let myScript = CustomScript() // Ошибка undefined, как-то нужно проверить, есть ли этот класс или нет if(myScript === undefined || myScript === null) { //Класса CustomScript еще нет, подключаем его. const includeScript = document.createElement('script'); includeScript .setAttribute("src", "/assets/custom_script.js"); includeScript .setAttribute("type", "text/javascript"); document.getElementsByTagName("head")[0].appendChild(includeScript ); } //Вызов объекта класса CustomScript myScript = CustomScript({ element: '.my-block', itemColon: 4, grid: true, slide: true, autoWidth: true }); }); |
Вместо этого
let myScript = CustomScript() // Ошибка undefined, как-то нужно проверить, есть ли этот класс или нет if(myScript === undefined || myScript === null) { //Класса CustomScript еще нет, подключаем его. просто if(CustomScript === undefined) После присоединения скрипта надо дожидаться окончания его загрузки - ловить событие onload. Про какой класс идет речь, и как "подрубают" скрипты - не понял. |
Так можно попробовать
function loadScript (src) { return new Promise ((res, rej) => { const script = document.createElement('script'); script.src = src; script.onload = res; script.onerror = rej; document.head.append(script) }) } window.addEventListener("load", async (event) => { let myScript; try { myScript = CustomScript(); // проверяем наличие скрипта. Если его нет будет ошибка } catch () { await loadScript("/assets/custom_script.js // При ошибке подключаем и ждем загрузку } finally { myScript = CustomScript({ // В любом случае выполняем это. element: '.my-block', itemColon: 4, grid: true, slide: true, autoWidth: true }); } }); |
Прекрасное решение:) Все отлично работает:)
Про какой класс идет речь, и как "подрубают" скрипты - не понял. Я спрашивал про проверку существования класса (прототипа) в ООП js, если я правильно понял Ваш вопрос. Скрипты библиотек подключаются в шапке путем прописывания <script src="/{url}/{name}.js"> Все, что касается инициализации объектов классов, вызывается внутри тегов <script> |
Часовой пояс GMT +3, время: 14:18. |