Quiero invocar la función window.setTimeot
con mi ámbito personalizado, así que utilizo el método call
, pero hay algo mal.javascript setTimeout call error
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 sólo 1 línea y luego nada, y en Google Chrome que arroja un TypeError
.
¿Cuál es el problema en mi código?
gracias, sé que de esta manera funciona, estoy tratando de usar la 'llamada'. –
@omnosis: No puede usar 'call' para este propósito. Lo que está buscando es ['bind'] (https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Function/bind), que es parte de la nueva especificación de ECMAScript 5. Usando eso, puedes hacer algo como esto: 'window.setTimeout (this.bar.bind (this), 100)'. – casablanca
tiene perfecto sentido. Cometí el mismo error, no tiene sentido usar 'call' en' setTimeout' porque no estás tratando de cambiar 'this' of' setTimeout', sino más bien, la función que estás pasando como argumento. aclamaciones – chiliNUT