2012-04-09 2 views
2

なぜこのようなウィンドウにJQuery(latest source)がAjax Request Objectを結びつけるのですか?なぜjQueryはajaxリクエストオブジェクトをウィンドウに結び付けていますか?

return new window.XMLHttpRequest(); 

私はb.c.を求めています。私のソースでは私はこれをしません。

XMLHttpRequestオブジェクトがwindowオブジェクトの子であるので、私はちょうど

return new XMLHttpRequest(); 
+1

これは通常、xmlhttprequestメソッドの存在場所です。下位互換性のために、単に 'new XML ... 'のグローバルオブジェクトに作られています。 –

+0

xmlhttprequestが定義されているときと同様に、ウィンドウオブジェクトの子オブジェクトとして実行されます。 –

+1

はい、17個のネストされたスコープが深い場合(jqueryで起こる)、参照がそのスコープで定義されている場合、ブラウザーがそれぞれの親スコープを尋ねなければならないため、ルックアップは時間がかかることになります。下の私の答えを参照してください。 – tkone

答えて

6

を行います。

windowはブラウザの親スコープであるため、孤立したオブジェクトとして参照できます。すなわちグローバルスコープである。参照がローカルスコープ(クロージャ)にない場合、JavaScriptは参照が見つかるまでスコープチェーンを上がり続けます。 window.XMLHttpObjectを使用すると、ブラウザーにどこを見つけるかを正確に伝えることで、すべてのルックアップを防ぐことができます。

+0

ウィンドウがjQueryに渡されました。そこで、この最適化も利用しています。 –

+0

要約すると、[zen of python](http://www.python.org/dev/peps/pep-0020/)の2行目には、「明示的は暗黙的に優れています。 – tkone

+0

@GuyMontag私はバックボーンを使って作業をしています(これを追加しています)が、成功した '.fetch'で実行される関数でコールスタックの深さは10段階です。それらの最初の5つはjQueryだけです。 – tkone

関連する問題