Bezdepbonusu7Программирование: статьи и ответы

"forEach()" и "это"

Архив Bezdepbonusu72 мин чтения

В своем последнем блоге я писал о привязке "this" к "EventListener".

У меня была похожая проблема с определением "this" в "forEach()".

Код ниже должен принимать массив имен (в смешанном регистре) и возвращать нормализованные имена (например, [ "anDReW", "DAVE" ] в [ "Andrew", "Dave" ] ).

Однако сообщение об ошибке показывает, что "это" - это "undefined" (в строке 13), а не объект экземпляра класса normalizedName. Это почему?

Я добавил "отладчик" в строку 13, чтобы увидеть, кто/что такое "это", и локальный область показывает "это" как "не определено". Что ж, в этом есть смысл, поскольку именно "nameArray.forEach" вызывает функцию обратного вызова в "forEach". >", а не экземпляр объекта.

Итак, как мы можем это исправить? Есть два способа решить эту проблему:

(1). Если я перенесу "отладчик" в строку 12 (за пределами "forEach"), а в локальной области видимости "this" теперь является экземпляром объекта класса normalizeName. Итак, мы можем привязать цикл "this" к циклу "forEach".

В строке 14 привяжите "this" (экземпляр объекта класса normalizeName) к "forEach".

(2). Используйте функцию стрелки в цикле forEach:

*** И "да", мы могли бы использовать "map" вместо "forEach":

Я знаю, что понятие "это" может быть трудным для понимания. Для меня выяснить, кто/что "это" использует console.log и/или отладчик всегда указывал мне правильный путь для решения проблемы.

JavaScriptThisClassBind

Похожие материалы

Статья из архива сайта: перевод и редактура материала сообщества разработчиков. Версии библиотек и инструментов могли измениться, сверяйтесь с официальной документацией.