2010-10-06 76 views
7

我的問題是我什麼時候應該使用$ .extend(...)?
在許多jQuery插件我看到的jquery對象本身擴展爲新的(全局)功能:

$.extend({ 
    doSth: function() { 
     alert('do sth here'); 
    } 
} 

哪些延伸jquery的對象,而不是創建包含該函數的全局對象的優點:

var myLib = { 
    doSth: function() { 
     alert('do sth here'); 
    } 
} 

目前我正在開發一個小型的js-lib。在那個lib中,$ .fn-object被擴展,我需要一些全局函數。
但我不知道把全局函數放在哪裏:在我自己的lib對象或jQuery對象中?

最好的問候,
大不了

回答

3

給予一定的情況下,因爲它不是從問題完全清楚:對於那些不知道,$.extend()與單個參數擴展jQuery對象。


通常沒有需要這一點,除非你添加一些非常庫有關,我會保持它在自己的名稱空間。根據$,它沒有任何用處,唯一可能發生的情況是隨後使用新的jQuery核心更新產生潛在的命名衝突。

如果你有一個插件,在那裏你既延長$.fn$去一個或兩個靜態方法,那麼我認爲這是可以接受的,但如果你有很多方法(這聽起來像的情況下)他們在$上沒有真正的好處。

老實說單個參數版本存在的原因(或者,更準確地說,是擺在首位加)是的jQuery本身,供內部使用(幾乎每一個「節」使用它,檢查出來hereherehere作爲示例),但我不確定外部使用是否是打算,他們只是將其保留爲開放/可擴展的。

+0

「單一參數版本存在的原因是jQuery本身」 - 以及插件。 – lonesomeday 2010-10-06 12:03:46

+0

@lonesomeday - 不是真的,它添加*的原因是jQuery,儘管插件*可以使用它,大多數插件會擴展'jQuery.fn',* not * jQuery,插件不需要*它們的靜態函數在jQuery對象上,但是它們*具有*在$ _fn上以用於鏈中。 – 2010-10-06 12:05:50

+0

對不起,我正在超越自己。 – lonesomeday 2010-10-06 12:08:28