проверка существования 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, время: 09:18. |