访问另一个原型函数的 Javascript 原型

Javascript prototype accessing another prototype function

本文关键字:原型 Javascript 函数 访问 另一个      更新时间:2023-09-26
function Scroller(id){
    this.ID = id;
    this.obj = $("#"+id);
    this.currentSlide = 1;
    var self = this;
    setInterval(self.nextSlide, 1000);
}
Scroller.prototype.nextSlide = function(){
    this.slideTo(this.currentSlide+1);
}
Scroller.prototype.slideTo = function(slide){
    // slide = (slide+this.obj.children().size()-1) % this.obj.children().size()+1; 
    // $("#"+this.ID+" > *:first-child").stop().animate({"margin-left": "-"+this.obj.get(0).offsetWidth*(slide-1)}, 1000);
    // currentSlide = slide;
}
$(document).ready(function(){
    new Scroller("actielist");
});

所以这是我的滚动器代码,但是当我尝试运行它时,它给了我以下错误:"未捕获的类型错误:this.slideTo 不是一个函数"

setInterval调用函数时,它会使用 window 的上下文(或this值)调用它(即它在全局范围/上下文中调用函数)。 您需要确保nextSlide内部的上下文正确。

尝试:

setInterval(self.nextSlide.bind(self), 1000);