Это лучше всего объяснить на примере кода ...
Object_A = {
testLoop:function(){
log("running");
setTimeout(Object_A.testLoop, 1000);
}
};
Object_B = function(){
this.testLoop= function(){
log("running");
setTimeout(this.testLoop(), 1000);
}
}
Object_A.testLoop(); // logs message to console every 1000ms, as you would expect
var objB = new Object_B();
objB.testLoop(); // runs infinitely at once (no 1000ms interval) until "Maxium call stack size exceeded"
Почему цикл прекрасно работает в статическом объекте, а не в "классоподобном" объекте, который объявляет генерирующую функцию?
(на sidenote: каково правильное название для этих двух типов объектов? Я продолжаю говорить "сатиничные" и "нестатические" объекты, но я чувствую, что это неправильно.)