Не работает this в стрелочной функции [дубликат]

67
26 февраля 2022, 14:00
На этот вопрос уже даны ответы здесь:
this в стрелочной функции при работе с DOM (2 ответа)
Закрыт 2 года назад.

class Catalog { 
    constructor(selector) { 
        this.items = document.querySelectorAll(selector); 
    } 
    getBorder(event, callback) { 
        this.items[0].addEventListener(event, callback); 
    } 
} 
let catalog = new Catalog('.catalog__item'); 
catalog.getBorder('click', () => {this.style.border = "3px solid red"});

Почему при использовании стрелочной функции консоль выдаёт ошибку, а при синтаксисе function declaration всё отрабатывает как надо без ошибок?

Answer 1

Потому что в стрелочной функции this - это контекст в том месте, где она определена. А в обычной, this зависит от того, как функция вызвана.

Answer 2

у стрелочной функции this берется родительский там где она создана, так как не имеет своего.

READ ALSO
js найти значение и вернуть ключ

js найти значение и вернуть ключ

имеется массив содержащий массивы var arr = {spb:[78,98,178,198], msk:[77, 97, 99, 177]}; как произвести в нем поиск по значениям и вернуть ключ? если это в корне...

74
append js, как добавить span к элементам

append js, как добавить span к элементам

Есть таймер обратного отсчетаСейчас он работает, но выводит цифры в одном блоке, нужно что бы выводил каждую цифру отдельным блоком для оформления

223
Передать src в img jquery

Передать src в img jquery

Не могу понять как прередать src img в другой блок с картинкой, в консоль лог выводится srcА в src вставляется [Object Object]

84
Почему не работает расширение?

Почему не работает расширение?

Сделал расширения для хрома, чтобы показывало количество изменений динамического z-indexПодскажите, пожалуйста, почему ругается хром, вроде...

82