2012-03-21 8 views
2

コンソールでこれを行うことができますか?window.window.window.window.windowを無限に追加して、DOMウィンドウを返しますか?コンソールwindow.window.window.windowでこれを行うことができ、ウィンドウを返すのはなぜですか?

+4

だけを読み取る[理由](https://developer.mozilla.org/en/DOM/window.window)。 – Jon

+2

ウィンドウオブジェクトが代わりに "buffalo"と呼ばれていたのであれば楽しいと思います。 – Pointy

+0

これは循環参照と呼ばれています。オブジェクトのプロパティは、それ自体を参照します。 –

答えて

1

これは、ウィンドウオブジェクトがウィンドウオブジェクト自体を指しているからです。

この動作のためのいくつかの理由が

  • は、それが簡単にグローバルオブジェクトを参照することができます含める(そうでない場合は手動VARウィンドウを行うに を持っていると思います=この;あなた スクリプトの先頭に割り当て) 。
  • 「window.open( 'http://google.com/')」と書くことはできません。「open( 'http:// google」)を使用するだけです。
  • このプロパティを使用する別の理由は、OOPバージョンと非OOPバージョン(特にJavaScriptモジュール)を提供したいライブラリのためです。

またhere

4

オブジェクトにはwindowオブジェクトへの参照を含むwindowというプロパティがあります。

これは、これと同じ原理で動作します:windowオブジェクトは、それ自体を指すwindow性質を持っているので

var foo = {}; 
foo.foo = foo; 
foo.bar = 1; 
alert(foo.foo.foo.foo.foo.bar); 
+0

私たちのパラレルな初期回答でLOLを編集してから編集します。あなたのために+1してください。 :) – Phrogz

5

。 (フレームセットでいないのであれば)

var foo = {}; 
foo.foo = foo; 
console.log(foo.foo.foo.foo.foo.foo.foo); 

は楽しみのためにwindowオブジェクトもtop財産をすることも、それ自体を指すself性を有し、:あなたが書いたかのようにそれは同じである

それを指す。したがって、次のように記述することができます:

console.log(window.window.top.self.top.self.window.window.self.top.top.self); 
2

windowを、したがって、それは基本的に自分自身へのポインタですが、グローバルオブジェクトへの参照である、とwindow変数はグローバルスコープです。

関連する問題