Почему оператор this в Javascript несовместим?
В JavaScript оператор this ведет себя по-разному в зависимости от контекст вызова. Это может привести к путанице и неожиданным результатам, особенно при работе с обратными вызовами и объектами.
Шаблоны вызова и привязка this
Оператор this привязан к объект или класс во время вызова функции, и эта привязка определяется шаблоном вызова:
Загадка обратного вызова
Проблема возникает, когда обратный вызов метода вызывается как функция. Поскольку обратные вызовы не вызываются как методы, «this» относится к глобальной области, а не к объекту, для которого он изначально предназначался.
Рекомендации
Одна стратегия поддержки Согласованность привязки «this» внутри обратных вызовов заключается в использовании «var that = this;» шаблон. При этом ссылка на «this» (объект) присваивается новой переменной («that»), которую затем можно использовать в обратном вызове.
Другой рекомендуемый подход — использовать аспект функционального программирования JavaScript и избегать использования классов. и модели наследования. Используя чистые функции и функции высшего порядка, вы можете отделить логику от состояний объекта и получить более модульный и предсказуемый код.
Кроме того, рассмотрите возможность использования инфраструктуры JavaScript, которая предоставляет механизмы для обработки «этой» привязки и объектно-ориентированных операций. ориентированное программирование последовательным образом. Не забудьте внимательно просмотреть документацию и особенности платформы, чтобы избежать неожиданного поведения.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3