トップレベルの関数はwindow
オブジェクトのメンバーであり、その内部のthis
はwindow
を参照しています。トップレベルでない関数は、どのオブジェクトのメンバーですか?
しかし、トップレベルでない関数の場合、this
はまだwindow
ですが、window
のメンバーではありません!ここで
は、いくつかのコードです:
function topLevel1() {
alert(this)
}
function topLevel2() {
function inner() {
alert(this)
}
inner()
}
topLevel1() // alerts DOMWindow
alert(window.topLevel1) // alerts text of topLevel1, as expected
topLevel2() // again, alerts DOMWindow
alert(window.inner) // undefined
alert(window.topLevel2.inner) // undefined
inner
は、そのメンバーそれはwindow
のもtopLevel2
のメンバーで、どちらの場合は?- どうすれば
this
はwindow
ですが、window
のメンバーではありませんか? this == owner
の場合は、現在のメソッドがowner.
で呼び出されたことはJavascriptの法則ではありませんか?このキーワードの素晴らしい基準である
よりks、それは今私にとっては明らかです。 – Fixpoint
私は、なぜJSが 'this == obj'で名前付き関数' f'を呼び出すための構文 'obj.f'を許さないのか分かりませんが。 – Fixpoint
それを無視して、 '.'はメンバーアクセスのためだけです。 – Fixpoint