mdn loop espaƱol ejemplos cronometro javascript scope call settimeout invoke

javascript - loop - settimeout typescript



javascript setTimeout error de llamada (1)

Usar la call no ayuda aquí: llama a setTimeout con su objeto, pero la función de devolución de llamada se sigue llamando desde el alcance global. Lo que realmente quieres hacer es algo como esto:

function foo() { var self = this; this.bar = function() { console.log("keep going"); window.setTimeout(function() { self.bar(); }, 100); } this.bar(); }

Editar: si realmente desea algo similar al enfoque de call , puede usar bind que vincula this valor para una función:

window.setTimeout(this.bar.bind(this), 100);

Sin embargo, esto es parte de la nueva especificación ECMAScript 5 que aún no es compatible con todos los navegadores.

Quiero invocar la función window.setTimeot con mi ámbito personalizado, así que utilizo el método de call , pero hay algo mal.

function foo() { this.bar = function() { console.log("keep going"); window.setTimeout.call(this,this.bar,100); } this.bar(); } new foo;

en Firefox esto imprime a la consola solo 1 línea y luego nada, y bajo google chrome arroja un TypeError .

¿Cuál es el problema en mi código?