插件開發應擴展 `$.fn`(原型),而非 `$`(靜態方法)。至於用 `$.extend()` 還是 `$.fn.xxx = function(){}`,無硬性規定,視團隊風格而定。
| 方式 | 適用場景 | 優點 | 缺點 |
|---|---|---|---|
$.fn.myPlugin = function(){...} |
單一插件、簡單邏輯 | 直觀、無額外依賴 | 多屬性擴展時代碼重複 |
$.extend($.fn, { myPlugin: function(){...}, another: function(){...} }) |
批量掛載多個方法、合併配置選項 | 統一管理、支援深度合併選項 | 稍顯繁瑣 |
(function($){
// 這裡的 $ 安全指向 jQuery,避免與其他庫(如 Prototype)衝突
$.fn.myPlugin = function(){ ... };
})(jQuery);
`$.extend()` 主要用於合併對象(如配置選項),而非一定要用它掛載插件方法。關鍵在於:擴展 `$.fn`、用 IIFE 隔離作用域、返回 `this` 支持鏈式。