Мне не удается получить доступ к методу вложенного класса. Это то, что я пробовал до сих пор. Основная проблема заключается в вызове TimerTask.execute()
. Ошибка указывает, что задача не определена.Проблема выделения для вложенного класса
Uncaught TypeError: undefined is not a function
Программа должна отображать приращение для десяти прогонов по таймеру.
var TimerTask = new Class({
initalize: function (options) {
this.counter = options.counter;
this.run = options.run;
this.onComplete = options.complete;
this.done = false;
},
execute : function() {
var me = this;
this.counter--;
if (this.done === false || this.counter <= 0) {
this.done = true;
me.onComplete.call(me);
} else {
me.run.call(me);
}
}
});
var Timer = new Class({
initialize: function (options) {
this.id = 0;
this.running = true;
this.count = 0;
this.delay = options.delay || 1000;
this.tasks = options.tasks || [];
},
start: function() {
var me = this;
me.id = setInterval(function tick() {
if (!me.running) return;
for (var i = 0; i < me.tasks.length; i++) {
me.tasks[i].execute();
}
me.count++;
}, this.delay);
},
pause: function pause() {
this.running = false;
return this;
},
run: function run() {
this.running = true;
return this;
},
stop: function stop() {
clearInterval(this.id);
this.stopped = true;
return this;
},
schedule: function (task) {
this.tasks.push(task);
}
});
var i = 0;
var t1 = new Timer({
delay: 1000,
tasks: [
new TimerTask({
run: function() {
document.getElementById('output').innerHTML = parseInt(i++, 10);
},
onComplete: function() {
alert('DONE!');
},
counter: 10
})]
});
t1.start();
<script src="//cdnjs.cloudflare.com/ajax/libs/mootools/1.5.0/mootools-core-full-compat.min.js"></script>
<div id="output"></div>
где же me.call получить определенный? – dandavis
теперь нет options.complete defined, и не инициализируется когда-либо называемый ... – dandavis
@ dandavis Хорошая ловушка, но проблема в 'run'. И я знаю, что это определено. Просто установите точку останова в 'else me.run.call (me);' в 'TimerTask.execute()'; функция не является частью прототипа этого объекта ... –