同じページで複数回使用したいjavascriptクラスオブジェクトがありsetTimeout
、バックグラウンドでチェックし続けるので機能する関数が必要です。ただし、このフィドルでわかるように、タイムアウト呼び出しでは、オブジェクトの最新のインスタンスのみを参照します。誰かが私がそれを分類する方法を知っていますか?できれば、jQueryではなくどのように実行されるかを確認したいと思います。正確にどのように実行されるかを理解したいと思います。
質問する
62 次
1 に答える
2
this.doDelayed
二重にネストされた関数内に書き込む場合、キーワードはオブジェクトthis
を参照しません。test
代わりに、現在実行中の関数が呼び出されたオブジェクトを参照します。これはおそらくwindow
です。
これを克服するには、関数this
の最初にを保存する必要があります。たとえば、次のようにし
ます。次に、を使用してそのオブジェクトを参照できます。test
var $this = this;
$this
これに加えて、単純に書くとx = something
、シンボルx
はwindow
オブジェクトのプロパティ(「グローバル変数」とも呼ばれます)のように扱われます。したがって、あなたdoDelayed
とconstruct
関数の両方がwindow
オブジェクトに行き着きます。したがって、これを2回実行すると、両方が上書きされます。これが、同じ結果が2回得られる理由です。
代わりに、 (上から保存した値は$this.doDelayed = function() ...
どこにありますか)と記述し、についても同様に行う必要があります。$this
this
construct
于 2012-10-03T00:12:29.660 に答える