This Is A FineDay

            BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            93 隨筆 :: 0 文章 :: 69 評(píng)論 :: 0 Trackbacks

          ( ).Prototype 1.5 rc2) 使用指南之 array.js

          $A = Array.from(iterable): iterable 轉(zhuǎn)化為數(shù)組,如果 iterable 定義了 toArray 方法,就調(diào)用這個(gè)方法,否則利用 iterable length 屬性進(jìn)行枚舉 , 如果 iterable 沒(méi)有 length 屬性的話就返回空數(shù)組 []

          Array 對(duì)象除了擴(kuò)展 Enumerable 對(duì)象的方法外,另外擴(kuò)展了如下的幾個(gè)方法,

          注意以下方法除了 clear 外都不改變?cè)瓉?lái)數(shù)組,而是返回一個(gè)新數(shù)組:

          clear(): 清除數(shù)組,利用 arr.length=0

          first(): 返回第一個(gè)元素

          last() :返回最后一個(gè)元素

          compact(): 去除數(shù)組中值為 null undefined 的元素

          flatten(): 將數(shù)組扁平化,例如 [3,4,[6,7]] 變?yōu)?/span> [3,4,6,7]

          without(): 去除指定的元素 , 可以指定多個(gè)值 , 例如 [4,56,7,8].without(4,7) 返回 [56 8]

          indexOf(object): 返回指定的元素在數(shù)組中的索引,不包含則返回 -1

          reverse(inline) Array 內(nèi)置函數(shù) reverse 的增強(qiáng),當(dāng) inline true 時(shí),跟內(nèi)置的 reverse 函數(shù)效果一樣,改變?cè)瓟?shù)組的值,否則不改變?cè)瓉?lái)的值

          reduce(): 如果數(shù)組只有一個(gè)元素,則返回這個(gè)元素,否則返回?cái)?shù)組本身

          uniq(): 返回沒(méi)有重復(fù)元素的數(shù)組

          clone(): 返回一個(gè)跟數(shù)組相同的數(shù)組, Array 中的 toArray 方法覆蓋了 Enumerable 中的 toArray 方法,指向了這個(gè)方法

          inspect(): 跟數(shù)組的 toString 方法類(lèi)似,返回對(duì)象的字符串表示,例如 [2,3].inspect() 返回 "[2,3]"

          ( ).Prototype 1.5 rc2) 使用指南之 hash.js

          Hash 對(duì)象 ( 關(guān)聯(lián)數(shù)組 ) Prototype 新建的一個(gè)對(duì)象,要?jiǎng)?chuàng)建一個(gè) Hash 對(duì)象可以調(diào)用 $H(object) 方法,使用這個(gè)方法將生成一個(gè)基于 object 對(duì)象的 Hash 對(duì)象,生成的 Hash 對(duì)象將 object 的屬性名作為 key ,將 object 的屬性值最為鍵值,因?yàn)?/span> javascript 本身的特點(diǎn) ( 對(duì)象本身就是關(guān)聯(lián)數(shù)組 ) ,所以實(shí)現(xiàn) Hash 也很簡(jiǎn)單, Prototype 中的 Hash 只是 javascript 的關(guān)聯(lián)數(shù)組 ( 對(duì)象 ) 而已

          Prototype 中的 Hash 對(duì)象繼承自 Enumerable 對(duì)象,所以也具有 Enumerable 對(duì)象的所有屬性和方法,另外它具有以下的方法:

          keys(): 返回 hash 的鍵值數(shù)組

          values(): 返回值得數(shù)組

          merge(hash): 合并兩個(gè) hash

          toQueryString(): string toQueryParams 方法想法,將 hash 轉(zhuǎn)化為一個(gè) querystring, 會(huì)調(diào)用 encodeURIComponent 對(duì)鍵和值進(jìn)行編碼

          inspect(): hash 的字符串表示

          因?yàn)?/span> hash 只是 javascript 的一個(gè)普通的對(duì)象而已,所以添加一個(gè)鍵值對(duì)使用: hash[key]=value 就可以了,刪除一個(gè)鍵值對(duì)使用 detele hash[key] 就可以了

          ( ).Prototype 1.5 rc2) 使用指南之 range.js

          Range 對(duì)象是一個(gè)繼承自 Enumerable " 范圍 " 對(duì)象,你可以把它看成 [x,x+1,x+2,x+3 …… x+n] 的數(shù)組看待,但是比這樣的數(shù)組更節(jié)省存儲(chǔ)空間,因?yàn)?/span> range 對(duì)象只是保存 x x+n 而已

          要?jiǎng)?chuàng)建一個(gè) Range 對(duì)象調(diào)用 $R(start, end, exclusive) 函數(shù)就可以了, exclusive 指定是否包含 end 本身,如果沒(méi)有指定或?yàn)?/span> false 則包含 end ,否則不包含 , 你可以利用 Enumerable 中定義的方法來(lái)操作 range 對(duì)象, range 對(duì)象只是實(shí)現(xiàn)了 Enumerable 對(duì)象需要的枚舉邏輯 _each 和覆蓋了 include 方法而已

          ( ).Prototype 1.5 rc2) 使用指南之 ajax

          Prototype 中的 ajax.js 提供了一個(gè)非常好用的 ajax 框架,一般應(yīng)用中簡(jiǎn)單的調(diào)用以下代碼就可以了

          new Ajax.Request(

          ??? url, {method: “get”,

          ??? onSuccess: showFilter,

          ??? onFailure: function(request){alert(”Server error!”)},

          ??? onException: showError}

          ? );

          這個(gè)框架中提供了如下的對(duì)象和方法等:

          Ajax 對(duì)象:

          只有一個(gè) getTransport 方法,返回一個(gè) XMLHttpRequest 對(duì)象,另外有一個(gè) activeRequestCount 屬性,反映當(dāng)前正在處理的 ajax 數(shù)量

          Ajax.Responders 對(duì)象:

          繼承自 Enumerable ,管理全局 Ajax 的請(qǐng)求,具有如下方法

          register(responder) :注冊(cè)一個(gè)管理 ajax 請(qǐng)求的對(duì)象

          unregister(responder) :撤銷(xiāo)一個(gè)管理 ajax 請(qǐng)求的對(duì)象

          dispatch(callback, request, transport, json) :觸發(fā)注冊(cè)的處理對(duì)象的方法

          這個(gè)對(duì)象一般很少使用,系統(tǒng)中已經(jīng)使用如下的代碼注冊(cè)了一個(gè)處理對(duì)象

          Ajax.Responders.register({

          ? onCreate: function() {

          ??? Ajax.activeRequestCount++;

          ? },

          ? onComplete: function() {

          ??? Ajax.activeRequestCount–;

          ? }

          });

          Ajax.Base 類(lèi):

          Ajax 的基類(lèi) , 只有一個(gè)方法 setOptions(options), 默認(rèn) request 參數(shù)如下,你可以在新建 Ajax.request 時(shí)指定:

          method:?????? 'post’,

          asynchronous: true,

          contentType:? 'application/x-www-form-urlencoded’,

          encoding:???? ' UTF-8 ,

          Ajax.Request 類(lèi):

          ajax 主要的類(lèi),繼承自 ajax.base 類(lèi),客戶(hù)端使用 new Ajax.Request(url,options) 調(diào)用, options 是一個(gè)對(duì)象 ( 關(guān)聯(lián)數(shù)組 ), options 中可以指定 method asynchronous contentType encoding parameters postBody username,password 等選項(xiàng),其中 parameters 可以是字符傳或者關(guān)聯(lián)數(shù)組象,

          另外在 options 中還可以通過(guò) requestHeaders 指定 request heads ,其中 requestHeaders 可以是數(shù)組 ( 例如 [ Connection , Close , aheadkey , aheadvalue ]) 或一個(gè)關(guān)聯(lián)數(shù)組;

          options 中最重要的選項(xiàng)就是指定 ajax 的回調(diào)方法,可以定義 onComplete, onSuccess, onFailure, onException( 執(zhí)行過(guò)程中發(fā)生異常調(diào)用的方法,主要為 onComplete, onSuccess, onFailure 等回調(diào)方法產(chǎn)生的 ) ,甚至可以定義 on404,on503 這樣的回調(diào)方法,它們的參數(shù)為 (transport, json), 其中 transport 為請(qǐng)求的 XMLHttpRequest 對(duì)象 , json evalJSON 的結(jié)果

          如果返回的是一個(gè) javascript 文件 ( 根據(jù)返回的 Content-type 頭判斷 ) 將會(huì)執(zhí)行 evalResponse 方法,另外 Ajax.Request 對(duì)象還有一個(gè) evalJSON 方法,取得文件的時(shí)候就會(huì)執(zhí)行

          這個(gè)對(duì)象的方法列表如下:

          request(url) : 發(fā)送請(qǐng)求, new 的時(shí)候就已經(jīng)調(diào)用了,所以一般不需要使用

          success(): 判斷 request 是否成功了

          getHeader(name) :根據(jù) name 得到 request head

          evalJSON(): 執(zhí)行 getHeader( X-JSON ), 并返回結(jié)果

          evalResponse(): 執(zhí)行返回的 responseText 并返回

          Ajax.Updater 類(lèi) :

          繼承自 Ajax.Request ,只是比 Ajax.Request 增加了更新 html 元素的功能,一般使用方法是 new Ajax.Updater(element, url, options), element 可以是一個(gè)元素,也可以是 {success:e1,failure:e2} 這種形式 ,

          默認(rèn)情況下不會(huì)執(zhí)行返回結(jié)果中的 javascript ,如果你先執(zhí)行,你可以指定 options 中的 evalScripts true

          默認(rèn)情況下是替換指定元素的內(nèi)容,如果你希望是添加,可以指定 options insertion 參數(shù) , insertion 是一個(gè) Insertion.Before Insertion.Top Insertion.Bottom Insertion.After( 將在 dom.js 中介紹 )

          Ajax.PeriodicalUpdater 類(lèi) :

          繼承自 Ajax.Base ,周期性的更新一個(gè) html 元素的內(nèi)容,這個(gè)類(lèi)會(huì)調(diào)用 Ajax.Updater 對(duì) html 元素進(jìn)行周期性的更新,使用方法為 new Ajax.PeriodicalUpdater(container, url, options), 參數(shù)跟 Ajax.Updater 差不多,其中 options 可以設(shè)置 frequency( 默認(rèn)為 2) decay decay 指的是當(dāng)請(qǐng)求的內(nèi)容沒(méi)有變化的時(shí)候, frequency 需要延長(zhǎng)的倍數(shù),默認(rèn)是 1 ,例如如果 decay 設(shè)為 2 frequency 設(shè)為 3 而內(nèi)容一直沒(méi)有變化,則請(qǐng)求的時(shí)間依次會(huì)變?yōu)?/span> 3,6,12,24

          start(): 開(kāi)始更新 , 初始化的時(shí)候會(huì)自動(dòng)調(diào)用

          stop(): 停止更新
          posted on 2008-07-03 21:46 Peter Pan 閱讀(210) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): JS
          主站蜘蛛池模板: 乐平市| 诏安县| 怀安县| 阳高县| 攀枝花市| 青田县| 腾冲县| 涪陵区| 灵武市| 区。| 洪湖市| 巴彦县| 海晏县| 平昌县| 景德镇市| 明光市| 丹寨县| 江都市| 林芝县| 新密市| 福贡县| 金寨县| 沙洋县| 榆林市| 尼勒克县| 乐山市| 八宿县| 府谷县| 家居| 武邑县| 于田县| 克拉玛依市| 新竹县| 临泽县| 绥德县| 中山市| 莱芜市| 平果县| 阿城市| 贡觉县| 潍坊市|