вот такой код на руках https://ideone.com/srM68f, по итогу имею в консоли объект Window, а не мой экземпляр класса. Почему так ?
там все правильно, за исключением опечатки в Myclass
так а с чем может быть тогда проблема то раз this ведет на Window ?
проблему уже озвучили, у тебя опечатка
не в опечатке дело говорю же. но уже неважно - разобрался
class MyClass{ setListener(){ console.log(this) } } let init = new MyClass(); init.setListener();
там была не в этом проблема говорю же
ок поделись в чем была, может понадобиться
вы как люди на СО или форумах, которые ищут ответ, находят, наконец, и никогда не пишут, в чём дело
да я вам скинул пример плюшевый с общей концепцией и один момент в нем (как мне казалось тогда неважный) я упустил. в связи с этим не знаю будет ли актуально но хз. в общем в setListener идет поиск по DOM конкретного элемента и если его нет, то запусти эту же функцию снова через 1 сек через setTimeout. и тк я не использовал лямбда функцию а просто напрямую впихнул, то шла потеря контекста =/
можно было просто привязать контекст
Это не эффективно, так как встроенный Function.prototype.bind медленный, а собственный быстрый не соответствует стандарту.
ну я про эффективность ни слова и не говорил
вы для этих целей можете MutationObserver использовать https://developer.mozilla.org/ru/docs/Web/API/MutationObserver
гораздо проще просто написать setTimeout(() => this.setListener())
а чем это проще? this.listener.bind(this) vs. () => this.setListener() где тут сложности?)
На самом деле первый сложнее, если подробно разбирать)
ну в плане написания - без разницы, как по мне а про то, как оно там внутри - другой вопрос один хрен, опять же, я бы юзал MutationObserver
а если у тебя virtual dom ?))
тогда аналог MutationObserver на виртуальном DOM, хотя не, чушь какая-то
ну, по вашему вопросу я там про виртуалдом ничего не увидел если он ручной - я бы повесился а если фреймворк, то там вряд ли бы сильно понадобилось так искать. скорее, это какие-то проблемы в архитектуре
Само по себе прокси же не для событий предназначено, а я имел в виду именно их. То есть MutationObserver на DOM, уведомляющий виртуальный DOM, и VirtualMutationObserver на виртуальном DOM, уведомляющий другой код. Лучше сразу из того MutationObserver уведомлять, и виртуальный DOM, и другой код (изменение в виртуальном DOM + вызов обработчиков из другого кода).
я подозреваю, опять же, что в любом случае вряд ли такие проверки для виртуалдома будут в тему. это как-то костылями пахнет, не знаю
Это вопрос также в контексте этого сообщения
Обсуждают сегодня