1

次のコードの場合

a.b = function c(){
    return function e(){
        return this;
    };
};
d = a.b();

d() の値はどうなりますか? これはあまり良い例ではないかもしれませんが、「これ」が何を指すのか混乱しています。

ありがとう、

4

6 に答える 6

4

d が FUNCTION に等しくなったので、"this" はそれを呼び出す関数に評価されます。実際にはまだ評価されていません。

実行の最後にが評価されるd='function e() { return this; }'ので、実行した瞬間が評価されます。d()this

于 2012-05-02T04:18:37.053 に答える
1

あなたのコードから d は「これ」と同じではありません。d は、関数を返す関数呼び出し ab() の戻り値に d を設定しているため、関数 e になります。

d = function e(){
    return this;
}

の値は、thisこの関数 d をどのように呼び出すかによって異なります。thisこの関数が呼び出されたときに評価されます。単に呼び出すと d() this、グローバルWindowオブジェクトになります。

私が持っているかどうか言ってみましょう

obj ={foo:1, bar:2};

そして私はこのように呼びます

d.call( obj )

thisオブジェクトobjになります。call() メソッドを使用して任意のオブジェクトの関数を呼び出すと、渡されたオブジェクトはthisその関数内で動作します。

Javascript は非常にややこしく、理解するのは簡単ではありません。これが役立つかもしれませんhttp://devlicio.us/blogs/sergio_pereira/archive/2009/02/09/javascript-5-ways-to-call-a-function.aspx

于 2012-05-02T04:29:32.420 に答える
0

thisすべての関数に対する暗黙のパラメーターです。

適用して電話するを参照してください

あなたがPythonを知っているなら、はとthis同じですselfが、明示的に書かれておらず、常にそこにあります

于 2012-05-02T04:22:26.210 に答える
0

this is normally the caller of a function

$('.image').each(function(index){
    alert($(this).attr('href'));
}

I think a.b() will return a

see http://remysharp.com/2007/04/12/jquerys-this-demystified/

于 2012-05-02T04:22:40.993 に答える
0

thisメソッドが呼び出されたオブジェクトへの参照です。 d()と同様(指示window.d()がない場合)with

于 2012-05-02T11:10:38.017 に答える
0

d()スニペットの最後の行の直後に が呼び出されたと仮定するとd()、グローバル オブジェクトが返されます:windowブラウザを使用している場合。

ただし、これらは両方とも当てはまります。

d.call(a) === a;
d.call(a.b.prototype) === a.b.prototype;

つまりthis、 の最初の引数として渡されるものによって定義されcallます。

于 2012-05-02T04:26:11.710 に答える