169 похожих чатов

Привет всем. Подскажите пожалуйста почему теряется контекст вызова ? Имею

вот такой код на руках https://ideone.com/srM68f, по итогу имею в консоли объект Window, а не мой экземпляр класса. Почему так ?

24 ответов

23 просмотра

там все правильно, за исключением опечатки в Myclass

Назар Калитюк
там все правильно, за исключением опечатки в Mycla...

так а с чем может быть тогда проблема то раз this ведет на Window ?

Санжар
проблему уже озвучили, у тебя опечатка

не в опечатке дело говорю же. но уже неважно - разобрался

Kerambit ()xxxxx[;;;;;;;;;> Brewmaster
не в опечатке дело говорю же. но уже неважно - раз...

class MyClass{ setListener(){ console.log(this) } } let init = new MyClass(); init.setListener();

Санжар
class MyClass{ setListener(){ console.log(th...

там была не в этом проблема говорю же

Kerambit ()xxxxx[;;;;;;;;;> Brewmaster
там была не в этом проблема говорю же

ок поделись в чем была, может понадобиться

Kerambit ()xxxxx[;;;;;;;;;> Brewmaster
там была не в этом проблема говорю же

вы как люди на СО или форумах, которые ищут ответ, находят, наконец, и никогда не пишут, в чём дело

Санжар
ок поделись в чем была, может понадобиться

да я вам скинул пример плюшевый с общей концепцией и один момент в нем (как мне казалось тогда неважный) я упустил. в связи с этим не знаю будет ли актуально но хз. в общем в setListener идет поиск по DOM конкретного элемента и если его нет, то запусти эту же функцию снова через 1 сек через setTimeout. и тк я не использовал лямбда функцию а просто напрямую впихнул, то шла потеря контекста =/

i7 4n
можно было просто привязать контекст

Это не эффективно, так как встроенный Function.prototype.bind медленный, а собственный быстрый не соответствует стандарту.

Тахир Уродовский
Это не эффективно, так как встроенный Function.pro...

ну я про эффективность ни слова и не говорил

Kerambit ()xxxxx[;;;;;;;;;> Brewmaster
да я вам скинул пример плюшевый с общей концепцией...

вы для этих целей можете MutationObserver использовать https://developer.mozilla.org/ru/docs/Web/API/MutationObserver

i7 4n
можно было просто привязать контекст

гораздо проще просто написать setTimeout(() => this.setListener())

Kerambit ()xxxxx[;;;;;;;;;> Brewmaster
гораздо проще просто написать setTimeout(() => thi...

а чем это проще? this.listener.bind(this) vs. () => this.setListener() где тут сложности?)

i7 4n
а чем это проще? this.listener.bind(this) vs. () ...

На самом деле первый сложнее, если подробно разбирать)

Тахир Уродовский
На самом деле первый сложнее, если подробно разбир...

ну в плане написания - без разницы, как по мне а про то, как оно там внутри - другой вопрос один хрен, опять же, я бы юзал MutationObserver

Kerambit ()xxxxx[;;;;;;;;;> Brewmaster
а если у тебя virtual dom ?))

тогда аналог MutationObserver на виртуальном DOM, хотя не, чушь какая-то

Kerambit ()xxxxx[;;;;;;;;;> Brewmaster
а если у тебя virtual dom ?))

ну, по вашему вопросу я там про виртуалдом ничего не увидел если он ручной - я бы повесился а если фреймворк, то там вряд ли бы сильно понадобилось так искать. скорее, это какие-то проблемы в архитектуре

i7 4n
ну, по вашему вопросу я там про виртуалдом ничего ...

Само по себе прокси же не для событий предназначено, а я имел в виду именно их. То есть MutationObserver на DOM, уведомляющий виртуальный DOM, и VirtualMutationObserver на виртуальном DOM, уведомляющий другой код. Лучше сразу из того MutationObserver уведомлять, и виртуальный DOM, и другой код (изменение в виртуальном DOM + вызов обработчиков из другого кода).

Тахир Уродовский
Само по себе прокси же не для событий предназначен...

я подозреваю, опять же, что в любом случае вряд ли такие проверки для виртуалдома будут в тему. это как-то костылями пахнет, не знаю

i7 4n
ну, по вашему вопросу я там про виртуалдом ничего ...

Это вопрос также в контексте этого сообщения

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

Обсуждают сегодня

30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
~ 2m21s  nix shell github:nixos/nixpkgs#stack ~  stack ghc -- --version error: … while calling the 'derivationStrict' builtin at /builtin/derivation.nix:...
Rebuild your mind.
6
Карта сайта