Size: a a a

JavaScript Noobs — сообщество новичков

2020 September 11

ГЩ

Глеб Щукин in JavaScript Noobs — сообщество новичков
какая ошибка?
источник

M

Maksim in JavaScript Noobs — сообщество новичков
Глеб Щукин
какая ошибка?
Ошибки нет, в консоль выдает underfined при срабатывании события. Так как будто я пытаюсь вывести в консоль еще не определенную переменную
источник

M

Maksim in JavaScript Noobs — сообщество новичков
Пойду почитаю еще про контекст this
источник

ГЩ

Глеб Щукин in JavaScript Noobs — сообщество новичков
Maksim
Ошибки нет, в консоль выдает underfined при срабатывании события. Так как будто я пытаюсь вывести в консоль еще не определенную переменную
потому что this указывает на элемент dom, а не на класс
источник

ГЩ

Глеб Щукин in JavaScript Noobs — сообщество новичков
соответственно у элемента нет свойства _deleteIcon
источник

ГЩ

Глеб Щукин in JavaScript Noobs — сообщество новичков
Maksim
Пойду почитаю еще про контекст this
про this целую книгу уже написали. на самом деле всё просто. главное усвоить, что this определяется в момент вызова. и будет указывать на объект, который будет "перед точкой"
источник

ГЩ

Глеб Щукин in JavaScript Noobs — сообщество новичков
проблема в addEventListener
источник

ГЩ

Глеб Щукин in JavaScript Noobs — сообщество новичков
this._deleteIcon.addEventListener('click', this._deleteCardHandler.bind(this))
источник

ГЩ

Глеб Щукин in JavaScript Noobs — сообщество новичков
Глеб Щукин
потому что this указывает на элемент dom, а не на класс
в момент клика указывает
источник

ГЩ

Глеб Щукин in JavaScript Noobs — сообщество новичков
по этому нужно явно задать контекст
источник

M

Maksim in JavaScript Noobs — сообщество новичков
Спасибо, пойду читать про bind
источник

ГЩ

Глеб Щукин in JavaScript Noobs — сообщество новичков
Maksim
Спасибо, пойду читать про bind
про this
источник

ГЩ

Глеб Щукин in JavaScript Noobs — сообщество новичков
это одна из неочевидных, но на самом деле простых вещей (когда дойдёт)
источник

ГЩ

Глеб Щукин in JavaScript Noobs — сообщество новичков
Maksim
Спасибо, пойду читать про bind
смари.
у тебя есть объект.
const obj = {
 foo: 'bar',
 baz: () => console.log(this.foo)
}
источник

ГЩ

Глеб Щукин in JavaScript Noobs — сообщество новичков
у него метод baz, который вызывает анонимную функцию
источник

ГЩ

Глеб Щукин in JavaScript Noobs — сообщество новичков
и ты ожидаешь, что в анонимной функции this будет указывать на этот объект. но нет.
источник

ГЩ

Глеб Щукин in JavaScript Noobs — сообщество новичков
смысл в том, что по факту функция которую вызывает baz вообще никак не связана с объектом. представь, что она лежит где то в другом месте и ничего про этот объект не знает в принципе.
источник

ГЩ

Глеб Щукин in JavaScript Noobs — сообщество новичков
ссылка  на объект появляется только в момент вызова obj.baz()
источник

v

va1 in JavaScript Noobs — сообщество новичков
Глеб Щукин
и ты ожидаешь, что в анонимной функции this будет указывать на этот объект. но нет.
Немного не тот пример. В случае со стрелками не работают правила this применимые к функциям. В данном случае this в стрелке указывает на окружение, в котором она иницализирована, то есть виндоу obj.baz = () = > для интерпретатора.
источник

ГЩ

Глеб Щукин in JavaScript Noobs — сообщество новичков
va1
Немного не тот пример. В случае со стрелками не работают правила this применимые к функциям. В данном случае this в стрелке указывает на окружение, в котором она иницализирована, то есть виндоу obj.baz = () = > для интерпретатора.
во, про стрелку отличное замечание.
источник