разбираюсь с функциями 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 свой... Кто может объясните как работает эта часть. Заранее спасибо.
