私はqunitのコードを調べていました。
私の質問は、なぜプロパティを介してqunitオブジェクトをウィンドウオブジェクトにアタッチしたいのかということです。
これがファイルへのリンクです。11行目を見てください。
firebugを使用して実行された単体テストを見ると、それがwindowのプロパティであることがわかります。
[編集]追加:特定の名前空間で物事を宣言するためのベストプラクティスの特定のリファレンスはありますか?
私はqunitのコードを調べていました。
私の質問は、なぜプロパティを介してqunitオブジェクトをウィンドウオブジェクトにアタッチしたいのかということです。
これがファイルへのリンクです。11行目を見てください。
firebugを使用して実行された単体テストを見ると、それがwindowのプロパティであることがわかります。
[編集]追加:特定の名前空間で物事を宣言するためのベストプラクティスの特定のリファレンスはありますか?
すべてのグローバルオブジェクト(関数、変数など)は、ウィンドウの子であり、デフォルトのコンテキストです。
例:window.jQuery
またはwindow.$
このように考える方が簡単かもしれません...他にどこに置きますか?この一般的なことをしているときは、デフォルトの場所に貼り付けるのが最善(または少なくとも最も簡単)です。多くの関数やオブジェクトなどで複雑なことをしている場合は、それらを名前空間またはオブジェクト内に配置するのが最適です。たとえば、jQueryのすべてのコードは下jQuery
にあり、のようにDOMのルートに散らばっているのではwindow.ajax
なく、jQuery.ajax
です。
これは非常にすっきりしていますが、いくつかのアイテムを扱う場合はおそらくやり過ぎですが、これが当てはまる場合は、それらが一意であることを確認することをお勧めします... qunitが行うように、オブジェクトの前にqunit-
のプロパティとしてグローバルをアタッチすることwindow
は悪い習慣です。すべてのグローバルは、を使用して宣言する必要がありますvar
。これが私の理由です:
ReferenceError
します。使用var
すると、JavaScriptの巻き上げが有効になり、この問題が軽減されます。[[DontDelete]]
この方法で作成されたグローバル変数がないことです。つまり、グローバル変数を削除できます。これはばかげています。私に関する限り、window.x = 1
名前付きのグローバル変数を作成するという事実x
は、JavaScriptの興味深い好奇心ですが、使用したり、返信したりしないでください。window
ただし、は他のオブジェクトと同じように(多かれ少なかれ)オブジェクトであるため、のプロパティを使用するのには十分な理由があります。window.onload
このような場合は、たとえば、だけでなくフルネームを使用する必要がありますonload
。