有jQuery的奇怪圖案:jQuery的可變陰影
var jQuery = (function() {
// Define a local copy of jQuery
var jQuery = function(selector, context) {
...
return jQuery;
})();
,這是什麼實際的原因是什麼?爲什麼不公開內部jQuery函數?它只是在內部jQuery和外部jQuery中的名稱衝突,因爲兩者都處於關閉狀態。
有jQuery的奇怪圖案:jQuery的可變陰影
var jQuery = (function() {
// Define a local copy of jQuery
var jQuery = function(selector, context) {
...
return jQuery;
})();
,這是什麼實際的原因是什麼?爲什麼不公開內部jQuery函數?它只是在內部jQuery和外部jQuery中的名稱衝突,因爲兩者都處於關閉狀態。
jQuery.noConflict(true)
刪除了jQuery的全局名稱。但是,如果不爲對象使用某個名稱,就不可能對其餘的jQuery庫進行編程,因此需要使用本地非暴露名稱。爲方便起見,他們將jQuery
重新定義爲匿名函數範圍內的變量。
該模式本身被稱爲模塊模式。這不是特定的jQuery,它並不奇怪,但非常有幫助。它允許隱藏對象狀態和實現。它還允許使用專門的方法(可訪問私人數據的公共方法)和其他良好的設計原則。
我明白這是模塊模式,但我不明白爲什麼不公開爲什麼不公開已在匿名函數中的外部jQuery。 – Marii 2012-04-24 07:59:00
它允許封裝所有其他[函數](https://github.com/jquery/jquery/blob/master/src/core.js#L942)和變量,這是定義'jQuery'所需的變量,但對用戶沒有意義 – zerkms 2012-04-24 07:50:08