-1

なぜ私はこれを行うことができません:

function f(){console.log(this)}
f.call(this);
setInterval(f.call, 1000, this);
4

4 に答える 4

2

.bindの代わりに使用する必要があります.call

function f(){console.log(this)}
setInterval(f.bind(the_context_obj), 1000);
于 2012-08-13T09:39:42.600 に答える
1

これを試して:

setInterval(f.call.bind(f, this), 1000);

http://jsfiddle.net/Qx3jU/

言い方が悪いだけだ setInterval(f.bind(this), 1000);けど

于 2012-08-13T09:40:11.413 に答える
0

Mozilla Devページから

構文は次のとおりです。

var intervalID = window.setInterval(func, delay[, param1, param2, ...]);
var intervalID = window.setInterval(code, delay);

最初の構文で追加のパラメーターを関数に渡すことは、Internet Explorer では機能しないことに注意してください。そのブラウザでこの機能を有効にしたい場合は、互換性コードを使用する必要があります (コールバック引数の段落を参照してください)。

次に、このような匿名関数を使用することをお勧めします

var x = this;
setInterval( function() { f.call(x); }, 1000 ); 

お役に立てれば。

于 2012-08-13T09:44:43.423 に答える
0

の値を 渡しているためf.call、 との関連付けが失われfます。

于 2012-08-13T09:38:37.187 に答える