1

jqueryキーワードselfはself.setIntervalで何を参照していますか? jquery

var int=self.setInterval(function(){clock()},1000);
4

3 に答える 3

7

self同じスコープ内のどこかで定義されていない限り、それは Window オブジェクトへの参照です。Window オブジェクトには、実際には 2 つの自己参照変数がselfあり、window

self.window.self.window.self.window.self.window.selfそのため、変な気分になっている場合は、 を実行できます。

そのため、あなたのコード

var int=self.setInterval(function(){clock()},1000);

と同等です

var int = setInterval(function(){clock()},1000);

また

var int = window.setInterval(function(){clock()},1000);

また、あなたはただすることができます

setInterval(clock,1000);

クロックを実行する以外に他のことをする必要がない限り、無名関数でラップする必要はありません。

window.self

于 2013-08-17T20:21:56.460 に答える
2

JavaScript では、一部のプログラマは変数を使用したり、関数スコープを参照しselfたりします。オブジェクトは、現在のオブジェクトまたは関数を参照します。thatthisthis

関数が別の関数内で実行されると、 への参照が失われthisます。これを回避する簡単な方法はthis、関数の外で変数を設定することです。

$.proxy(function, this)jquery (IE8 互換、IE7 以前については不明) を使用するか、最新のブラウザーを使用して、これらの参照を回避する方法があります。(function(){}.bind(this))

アップデート

パトリックが指摘したようにself、デフォルトではアクティブを参照していwindowます。たとえば、フレーム内で便利です。

http://www.w3schools.com/jsref/prop_win_self.asp

于 2013-08-17T19:57:48.267 に答える
2

selfは JavaScript の予約語ではありません。ただし、現在のメソッドが実行されているオブジェクトに割り当てる一般的な規則がありselfます。たとえば、次のようになります。

var myobj = {
    mymethod: function () {
        var self = this;
    },
};

これの理由はthis、親オブジェクトに影響を与える非同期コールバックのような他のクールなことを実行できるように変数にバックアップするためです。

おそらく、より多くのコンテキストを提供していただければself、問題で変数が何に設定されているかを説明できます。

于 2013-08-17T19:59:20.280 に答える