Когда это спорит: понимание «это» в функциях обратного вызова
В JavaScript значение this при вызове функции определяется контекст, в котором выполняется функция. Однако при передаче этого параметра в качестве аргумента правила могут усложниться.
В частности, возникает следующий сценарий: когда функция обратного вызова передается в качестве аргумента, почему это не устанавливается в функцию, которая вызывает обратный вызов?
Понимание иерархии 'this'
Чтобы понять, почему это установлено там, где оно есть, нам нужно рассмотрим иерархию вызовов функций:
Однако, прежде чем randomFunction вызывает обратный вызов, она использует this.sumData.bind(this) для создания новой функции (правило №5). Эта новая функция вызывает исходную функцию обратного вызова, но теперь с привязкой к obj (аргумент, переданный в функцию связывания).
Последствия для функций обратного вызова
При передаче метода в качестве обратного вызова важно понимать, что он не будет вызываться как obj.method(). Это означает, что внутри функции обратного вызова не будет правильного значения. Чтобы обойти эту проблему, вы можете использовать метод метода метода Bind() для установки значения this в обратном вызове.
Другие полезные примечания
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3