【发布时间】:2018-06-27 22:22:26
【问题描述】:
我是 es6 类的新手,不能完全理解为什么以下行为会这样:
let scrollElement = document.querySelector(".foo");
scrollElement.addEventListener("scroll", logSomething());
logSomething(){
console.log("hi");
}
每次滚动时都会在我的控制台中输出“hi”。这就是我要的。现在我尝试做同样的事情,但使用一个指定的类来对所有滚动行为进行分组:
class scrollHelper{
constructor(scrollElement){
scrollElement.addEventListener("scroll", this.logSomething());
}
logSomething(){
console.log("hi");
}
}
let scrollElement = document.querySelector(".foo");
new scrollHelper(scrollElement)
但不是每次滚动时都记录 hi,而是在创建类实例时记录“hi”,之后再也不记录。
有人可以告诉我为什么会发生这种情况以及我做错了什么以获得与第一个示例相同的结果。
问候, 梅林
【问题讨论】:
-
它是
scrollElement.addEventListener("scroll", this.logSomething);。你需要传递一个函数reference,而不是call函数。 -
因为没有这个功能。你必须调用你需要的方法。另请参阅 stackoverflow.com/questions/20279484/… 以了解将方法用作回调。
标签: javascript ecmascript-6 es6-class