2012-03-03 6 views
0

Modernizrは、次で始まる:なぜウィンドウとドキュメントがパラメータとして渡されましたか?

window.Modernizr = (function(window,document,undefined) { ... 

...しかし、ウィンドウおよびドキュメントをパラメータとして渡されている理由は?ブラウザ間の違いとは何か?それとも単純に再定義できないのですか?その関数を呼び出す

+0

これは環境を多かれ少なかれ独立させ、テスト目的で 'window'と' document'をモックすることを可能にします。 –

+0

正確な複製([関数(ウィンドウ、ドキュメント、未定義){...})(ウィンドウ、ドキュメント)を使用する利点は何ですか?](http://stackoverflow.com/questions/5020479/what-advantages-does -using-functionwindow-document-undefined-windo) – Bergi

答えて

1

パラメータは、以下の通りである:(this, this.document)だから、windowがグローバルオブジェクトであることを保証しています 、documentは、ドキュメントオブジェクトであるとundefinedは未定義です。

また、パフォーマンスが少し改善されます。詳細はWhy does jQuery has a "window=this" at the very begining and say it would speed up references to window?を参照してください。

0

私はそれが効率的だと信じています。 windowdocumentは、Modernizrがそれを必要とするたびにフェッチする必要はなく、そのキャッシュバージョンです。

関連する問題