javascript - this.functionName 的工作方式因事件侦听器而异
问题描述
随机编码问题,见下文,
// Event listener method 1
window.addEventListener('hashchange', () => {
this.hashHandler()
})
// Event listerner method 2
window.addEventListener('hashchange', this.hashHandler)
hashHandler () {
this.flickity.viewFullscreen() // Works for method 1, not for
method 2
}
上面代码的注释应该是不言自明的......你知道为什么事件监听器声明方式的改变会导致“这个”工作......
解决方案
阅读箭头函数和函数声明之间的差异。基本上,当您声明这样的函数时,function () {}
值this
就是函数本身。在箭头函数内this
保持其父级 this 的值。
推荐阅读
- java - Firebase 身份验证控制台未显示添加的新用户
- java - Spring Kafka 批处理侦听器是否以批处理模式提交数据库事务,如果失败,是否会回滚整个事务?
- java - 如何使用junit从另一个方法中测试方法调用
- oracle - 为什么我的空检查在 Oracle 的这个 IF 语句中不起作用?
- powershell - Windows 窗体如何将命令结果输出到文本框
- javascript - 禁止(CSRF 令牌丢失或不正确。) | Django 和 AJAX
- r - 基于列索引对 R 数据帧进行切片
- python - Python:通过 cog 和后台任务向 Discord 中的特定频道发送消息
- macos - 在 macOS 上增加和减少 WKWebView 的文本大小
- python - 使用 Psycopg2 获取列作为值列表