2012-01-05 90 views
-4

據說這裏:爲什麼jQuery不污染全局命名空間?

http://briancrescimanno.com/2009/09/24/how-self-executing-anonymous-functions-work/

看看jQuery的源代碼,你會看到整個 庫被包裹在爲 單,自動執行功能分配給jQuery全局對象。

但是既然jQuery是GLOBAL對象,它會污染全局命名空間,或者我錯過了某些東西?

+5

定義「污染」。一個*單個對象*「污染」了命名空間嗎? – 2012-01-05 22:19:36

回答

4

在全局範圍內只有一個(兩個)變量不被認爲是全球範圍的污染。它就像一個命名空間,其他庫不太可能會調用它們的命名空間'jQuery'(更可能是$)。甚至在這種情況下,jQuery通過實現noConflict函數來優雅地處理它。

+0

哦,其他庫很可能會使用'$'。這是一個JavaScript庫磁鐵:P – Anurag 2012-01-05 22:21:33

5

您沒有正確閱讀該博客文章中的下一句。它並沒有聲稱有沒有污染:

這正是jQuery不會污染全局命名空間遠遠不如其他庫的原因。

0

想想替代方案也很有意義:如果在全局範圍內沒有對象,對象在哪裏? Javascript中的所有內容都有一個範圍,所以如果$不在全局命名空間或另一個JavaScript對象中,它就是沒有約束且無法訪問的。這種情況應該是不可能的。每個對象必須去某處

如果JavaScript對象存在,但沒有範圍,是否可用? 如果一棵樹落在森林裏,但沒有人在附近,它會發出聲音嗎?