Я пытаюсь разобраться с этой проблемой контекста, используя прототипное наследование (с которым я раньше не играл).У меня есть объект AutoScroller:
function AutoScroller() {
this.timer = null;
}
AutoScroller.prototype = {
stop: function() {
if (this.timer == null) {
return;
}
clearInterval(this.timer);
this.timer = null;
console.log("stop");
},
start: function() {
if (this.timer != null) {
return;
}
this.timer = setInterval(function() { this.move(); }, 3000);
console.log("start");
},
move: function() {
console.log("move");
}
};
Когда документ готов, я запускаю все, выполняя это:
var scr = new AutoScroller();
$('div.gallery p.stopBtn').bind("click", scr.stop);
$('div.gallery p.startBtn').bind("click", scr.start);
Все проблемы возникают, потому что «this» всегда относится к «p.startBtn».', а не scr, поэтому, когда вызывается функция запуска с setInterval, я получаю сообщение об ошибке "this.move () не является функцией".
Я знаю, что контекст - это довольно фундаментальная концепция, из которой я появляюсьпонятия не имею.Есть идеи, как с этим разобраться?