@symnoob

Как обратиться к методу в классе из вне?

Всем привет,

как можно обратиться к методу в классе из вне?

в моём случае, всё обстоит так:

js File 1:
export default class MyCustomClass{

  function myCustomMethod(){
    console.log('done');
  }
}


js File 2:
improt MyCustomClass from "../assets/js/MyCustomClass";
$(document).ready(function(){
 let myCustomClass = new MyCustomClass();
})


HTML:
<button class="btn btn-primary" onclick="myCustomClass.myCustomMethod()">Выполнить!</button>


но это почему то не работает :-(
myCustomClass is not defined at HTMLButtonElement.onclick
  • Вопрос задан
  • 161 просмотр
Пригласить эксперта
Ответы на вопрос 1
Ошибка вот здесь

$(document).ready(function(){
 let myCustomClass = new MyCustomClass();
})


переменная myCustomClass объявлена в контексте функции и не доступна за её пределами, а код в обработчике onclick="myCustomClass.myCustomMethod()" ожидает, что это будет глобальная переменная.
Чтобы поправить ошибку, достаточно объявить переменную вот так:

// без document.ready
window.myCustomClass = new MyCustomClass();


Но это будет НЕ правильным решением, потому что:
1. Не нужно смешивать разметку и код, обработчик на onclick нужно вешать через js
2. Не нужно использовать глобальные переменные, в больших проектах это чревато багами
3. Если используете JQuery, то делайте всё через него, не смешивайте разные подходы.

Воспользуйтесь кодом в примерах от Uneasy Hearts Weigh the Most
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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