iT邦幫忙

DAY 4
9

jQuery 套件開發之我可不可以跳著說系列 第 4

jQuery套件開發之(四),預設值與設定值的差別。

寫套件的時候,我們會用宣告一個物件來存預設值。

但是,有時候我們要全域改設定值的時候。

是不用打開JS改的,類似$.ajaxSetup

<文章列表>
IT人生組文章
--9/19 : 程式設計師的成就感
http://ithelp.ithome.com.tw/question/10127573
--9/18 : 你的職業是甚麼?
http://ithelp.ithome.com.tw/question/10127308
--9/17 : 寫程式的習慣
http://ithelp.ithome.com.tw/question/10127036
--9/16 : 各行各業的名人
http://ithelp.ithome.com.tw/question/10126681

開發技術組文章
--9/19 : jQuery套件開發(四),預設值與設定值的差別。
http://ithelp.ithome.com.tw/question/10127575
--9/18 : jQuery套件開發(三),true false的判斷
http://ithelp.ithome.com.tw/question/10127297
--9/17 : jQuery套件開發(二),jQuery的套件,開發前該了解的事情~
http://ithelp.ithome.com.tw/question/10127033
--9/16 : jQuery套件開發(一),三十天,我想要分享的東西
http://ithelp.ithome.com.tw/question/10126657
有全域變數的套件,怎麼玩?

會有這樣的想法是起因於jQuery的ajax有一個全域方法可以用 – ajaxSetup

這可以直接更改之後request預設值。

這樣的用法的確是獨立於options、methods 、events等的狀況。

這裡提的options、methods 、events 可以參考我的文章這一篇
http://ithelp.ithome.com.tw/question/10127033

而有別於套件的用法是$(selector).pluginName() ;

既然是影響全部套件的東西,自然selector的角色變得不太重要

$.pluginName(do something) //這樣就可以了。

$.pluginName(‘method’, method arguments) ;

$.pluginName(‘option’, option value) ;

這裡解釋一下$(selector).pluginName 跟 $.pluginName的差別在哪裡?

這兩個用法完全是兩回事,只是站在使用者的角度讓這個套件使用更顯得直覺與方便。

透過$() 這個函式(或是說class) 會有jQuery為你寫的許許多多方便的特性

那都是因為$() return的東西是jQuery物件

所以我們常常要把this 用$() 包起來變成 $(this)

因為這樣一來才能享用jQuery帶給我們的方便,不是嗎?

而$.fn.pluginName = function….

這樣的寫法作用是給jquery增加prototype方法。

所以,你的jQuery就有新的特性可以用了。

而$.pluginName = function…卻是截然不同的概念。

這只是因為$是一個物件,你直接在這個物件增加一個特性。

就好像你有一個網站,有很多js function要寫好。

那你會

var site = {} ;

site.getUrl = function…

site.getItem = function…

這兩者沒甚麼差別。

如果你要寫的東西很龐大

你甚至可以作點分類的動作

$.get.Item = function()
$.set.Item = function()

這時候get set就不會用特性來稱呼,會叫作"命名空間"。

了解這些基礎知識之後,寫出來的套件,在操作面上才會跟人家比較像...


上一篇
jQuery套件開發之(三),true false的判斷
下一篇
jQuery套件開發之(五),套件的定義。
系列文
jQuery 套件開發之我可不可以跳著說26

2 則留言

0
yihan1028
iT邦新手 3 級 ‧ 2013-09-20 09:20:00

謝謝您

我要留言

立即登入留言