1

重複の可能性:
「this」キーワード、
javascript でこの演算子をクリアしない

function foo()
{
    if(this === window)
        return null;

    return 1;
}

var i = foo(); // returns 1;

グローバル関数のメンバーとは何ですかthis? グローバル スコープまたはメンバー関数として呼び出されている場合、関数内からどのようにテストできますか?

foo編集: ここではJQuery が違いを生んでいるようですnull。JQuery はこれをどのように変更しますか?

OPは、以下のコメントで、これはGreasemonkeyスクリプトにあると述べていることに注意してください。

4

4 に答える 4

3

thisによると、違いはグリースモンキー(JQueryではありません)によるものです。

ただし、Greasemonkey ユーザー スクリプトは、既定で、識別子を飲み込む無名関数ラッパー内にすべてのコードをラップするため、識別子がグローバル オブジェクトに到達しません。

通常のオンページ Javascript と同じように、を使用@unwrapしてを指定できると言います。thiswindow

于 2011-07-07T18:56:43.457 に答える
3

thisこの場合、window オブジェクトを参照します。

実行するだけで、次alert(this);のように表示されます[object Window]

しかし、もしそうなら

var i = new foo(); // returns an object (instance of foo);

thisのインスタンスを参照しますfoo

于 2011-07-07T18:24:35.520 に答える
0

this メンバーはページ全体を参照し、常に定義されます。foo() メソッドが null を返すことはありません。

于 2011-07-07T18:28:40.747 に答える
-1

this常に現在の要素を指します。の場合はfoo()、 をthis指しwindowます。

于 2011-07-07T18:25:29.997 に答える