Пытаюсь понять эту тему, потому пишу обыкновенный jquery-слайдер, но чтобы в объекте был.
Вот какая ерунда выходит:
PromoBlock = {
options: {
animateDuration: 800,
animateEasing: 'swing',
autoslideDelay: 2000
},
SwitchTo: function(index){
var options = this.options
…
},
AutoSlide: function(){
var Switch2Next = this.SwitchTo
var autoslideTimer = setInterval(Switch2Next,this.options.autoslideDelay)
},
Init: function(){
…
this.AutoSlide()
}
}
PromoBlock.Init()
Из этого кода вырезано всё несущественное для вопроса.
Функция SwitchTo вызывается либо сама по себе, либо через setInterval, который, как известно, меняет контекст.
Соответственно, когда вызывается через setInterval, внутри неё var options = this.options не срабатывает, поскольку this == window.
Вот только я не понимаю, как правильно поступить, чтобы и в этом случае this был объект PromoBlock.