首页 > 解决方案 > 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
}

上面代码的注释应该是不言自明的......你知道为什么事件监听器声明方式的改变会导致“这个”工作......

标签: javascript

解决方案


阅读箭头函数和函数声明之间的差异。基本上,当您声明这样的函数时,function () {}this就是函数本身。在箭头函数内this保持其父级 this 的值。


推荐阅读