this
関数が動作する現在のオブジェクトを指していることを知っています。だからここに定義によるコードがあります
function foo(){
alert(this); //output==window
}
したがって、関数fooはwindow.foo()と同じですが、ここにあります
function foo(){
function fo(){
alert(this);
}
fo();
}
では、foo
実行されると、出力が再びウィンドウオブジェクトになるのはなぜですか?ネストされた関数は別のオブジェクトを参照する必要があるため、this
fo()はfoo()== window.foo()としてウィンドウオブジェクトを操作していないため、ネストされた関数は別のオブジェクトを指すようになります。
詳細については、こちらをご覧ください。
function foo()
{
alert(this);
function fo(){alert(this);}
as();
}
もし今なら、var x = new foo(); foo()メソッド内の "this"はオブジェクトオブジェクトを指しますが、ネストされたthisはグローバルオブジェクトを指しますか?