次のコードの場合
a.b = function c(){
return function e(){
return this;
};
};
d = a.b();
d() の値はどうなりますか? これはあまり良い例ではないかもしれませんが、「これ」が何を指すのか混乱しています。
ありがとう、
次のコードの場合
a.b = function c(){
return function e(){
return this;
};
};
d = a.b();
d() の値はどうなりますか? これはあまり良い例ではないかもしれませんが、「これ」が何を指すのか混乱しています。
ありがとう、
d が FUNCTION に等しくなったので、"this" はそれを呼び出す関数に評価されます。実際にはまだ評価されていません。
実行の最後にが評価されるd='function e() { return this; }'
ので、実行した瞬間が評価されます。d()
this
あなたのコードから 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
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/
this
メソッドが呼び出されたオブジェクトへの参照です。
d()
と同様(指示window.d()
がない場合)with
d()
スニペットの最後の行の直後に が呼び出されたと仮定するとd()
、グローバル オブジェクトが返されます:window
ブラウザを使用している場合。
ただし、これらは両方とも当てはまります。
d.call(a) === a;
d.call(a.b.prototype) === a.b.prototype;
つまりthis
、 の最初の引数として渡されるものによって定義されcall
ます。