разбираюсь с функциями setTimeout и setInterval(http://learn.javascript.ru/settimeout-setinterval).
Есть такой пример
function Runner() {
this.steps = 0;
this.step = function() {
doSomethingHeavy();
this.steps++;
}
function doSomethingHeavy() {
for(var i=0; i<10000; i++) {
this[i] = this.step + i;
}
}
}
var runner1 = new Runner();
var runner2 = new Runner();
// запускаем бегунов
setInterval(function() {
runner1.step();
}, 15);
setTimeout(function go() {
runner2.step();
setTimeout(go, 15);
}, 15);
// кто сделает больше шагов?
setTimeout(function() {
console.log(runner1.steps);
console.log(runner2.steps);
}, 5000);
возникли трудности с понимание кода, в 4 строке this.step = функции, а в строке 11 this.step используется как свойство. Если после работы функций взять runner1[0] -> undefined, из этого следует что в doSomethingHeavy this свой... Кто может объясните как работает эта часть. Заранее спасибо.