jqueryキーワードselfはself.setIntervalで何を参照していますか? jquery
var int=self.setInterval(function(){clock()},1000);
jqueryキーワードselfはself.setIntervalで何を参照していますか? jquery
var int=self.setInterval(function(){clock()},1000);
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);
クロックを実行する以外に他のことをする必要がない限り、無名関数でラップする必要はありません。
JavaScript では、一部のプログラマは変数を使用したり、関数スコープを参照しself
たりします。オブジェクトは、現在のオブジェクトまたは関数を参照します。that
this
this
関数が別の関数内で実行されると、 への参照が失われthis
ます。これを回避する簡単な方法はthis
、関数の外で変数を設定することです。
$.proxy(function, this)
jquery (IE8 互換、IE7 以前については不明) を使用するか、最新のブラウザーを使用して、これらの参照を回避する方法があります。(function(){}.bind(this))
アップデート
パトリックが指摘したようにself
、デフォルトではアクティブを参照していwindow
ます。たとえば、フレーム内で便利です。
self
は JavaScript の予約語ではありません。ただし、現在のメソッドが実行されているオブジェクトに割り当てる一般的な規則がありself
ます。たとえば、次のようになります。
var myobj = {
mymethod: function () {
var self = this;
},
};
これの理由はthis
、親オブジェクトに影響を与える非同期コールバックのような他のクールなことを実行できるように変数にバックアップするためです。
おそらく、より多くのコンテキストを提供していただければself
、問題で変数が何に設定されているかを説明できます。