如何将this
传递给分配给window.onscroll
事件的函数?
我正在尝试在满足某个条件时触发myFunction()
。我需要检查这个条件onscroll
init() {
window.onscroll = function() {
if(this.currentItemCount() > this.totalElements){
this.totalElements = this.currentItemCount();
this.myFunction();
}
};
}
但是我收到this.currentItemCount()
不是函数的错误。我知道我需要将this
传递给window.onscroll
,但我无法弄清楚正确的语法。
答案 0 :(得分:4)
您可以使用that = this
构造。 (What does 'var that = this;' mean in JavaScript?)
init() {
var that = this;
window.onscroll = function() {
if(that.currentItemCount() > that.totalElements){
that.totalElements = that.currentItemCount();
that.myFunction();
}
};
}
甚至更好地使用箭头功能从包装上下文中保留this
(需要ES6支持或转换器):
init() {
window.onscroll = () => {
if(this.currentItemCount() > this.totalElements){
this.totalElements = this.currentItemCount();
this.myFunction();
}
};
}
答案 1 :(得分:1)
你可以试试这个:
init() {
var self = this;
window.onscroll = function() {
if(self.currentItemCount() > self.totalElements){
self.totalElements = self.currentItemCount();
self.myFunction();
}
};
}
内部范围无法提供 this
,但self
可用。