Показать сообщение отдельно
  #1 (permalink)  
Старый 20.08.2012, 14:56
Аватар для LittlePony
Кандидат Javascript-наук
Отправить личное сообщение для LittlePony Посмотреть профиль Найти все сообщения от LittlePony
 
Регистрация: 19.08.2012
Сообщений: 100

таки опять вопрос про this
Пытаюсь понять эту тему, потому пишу обыкновенный 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.
Ответить с цитированием