This Is A FineDay

  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  93 随笔 :: 0 文章 :: 69 评论 :: 0 Trackbacks

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

$A = Array.from(iterable): iterable 转化为数组,如果 iterable 定义了 toArray 方法,就调用这个方法,否则利用 iterable length 属性进行枚举 , 如果 iterable 没有 length 属性的话就返回空数组 []

Array 对象除了扩展 Enumerable 对象的方法外,另外扩展了如下的几个方法,

注意以下方法除了 clear 外都不改变原来数组,而是返回一个新数组:

clear(): 清除数组,利用 arr.length=0

first(): 返回第一个元素

last() :返回最后一个元素

compact(): 去除数组中值为 null undefined 的元素

flatten(): 将数组扁平化,例如 [3,4,[6,7]] 变为 [3,4,6,7]

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

indexOf(object): 返回指定的元素在数组中的索引,不包含则返回 -1

reverse(inline) Array 内置函数 reverse 的增强,当 inline true 时,跟内置的 reverse 函数效果一样,改变原数组的值,否则不改变原来的值

reduce(): 如果数组只有一个元素,则返回这个元素,否则返回数组本身

uniq(): 返回没有重复元素的数组

clone(): 返回一个跟数组相同的数组, Array 中的 toArray 方法覆盖了 Enumerable 中的 toArray 方法,指向了这个方法

inspect(): 跟数组的 toString 方法类似,返回对象的字符串表示,例如 [2,3].inspect() 返回 "[2,3]"

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

Hash 对象 ( 关联数组 ) Prototype 新建的一个对象,要创建一个 Hash 对象可以调用 $H(object) 方法,使用这个方法将生成一个基于 object 对象的 Hash 对象,生成的 Hash 对象将 object 的属性名作为 key ,将 object 的属性值最为键值,因为 javascript 本身的特点 ( 对象本身就是关联数组 ) ,所以实现 Hash 也很简单, Prototype 中的 Hash 只是 javascript 的关联数组 ( 对象 ) 而已

Prototype 中的 Hash 对象继承自 Enumerable 对象,所以也具有 Enumerable 对象的所有属性和方法,另外它具有以下的方法:

keys(): 返回 hash 的键值数组

values(): 返回值得数组

merge(hash): 合并两个 hash

toQueryString(): string toQueryParams 方法想法,将 hash 转化为一个 querystring, 会调用 encodeURIComponent 对键和值进行编码

inspect(): hash 的字符串表示

因为 hash 只是 javascript 的一个普通的对象而已,所以添加一个键值对使用: hash[key]=value 就可以了,删除一个键值对使用 detele hash[key] 就可以了

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

Range 对象是一个继承自 Enumerable " 范围 " 对象,你可以把它看成 [x,x+1,x+2,x+3 …… x+n] 的数组看待,但是比这样的数组更节省存储空间,因为 range 对象只是保存 x x+n 而已

要创建一个 Range 对象调用 $R(start, end, exclusive) 函数就可以了, exclusive 指定是否包含 end 本身,如果没有指定或为 false 则包含 end ,否则不包含 , 你可以利用 Enumerable 中定义的方法来操作 range 对象, range 对象只是实现了 Enumerable 对象需要的枚举逻辑 _each 和覆盖了 include 方法而已

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

Prototype 中的 ajax.js 提供了一个非常好用的 ajax 框架,一般应用中简单的调用以下代码就可以了

new Ajax.Request(

    url, {method: “get”,

    onSuccess: showFilter,

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

    onException: showError}

  );

这个框架中提供了如下的对象和方法等:

Ajax 对象:

只有一个 getTransport 方法,返回一个 XMLHttpRequest 对象,另外有一个 activeRequestCount 属性,反映当前正在处理的 ajax 数量

Ajax.Responders 对象:

继承自 Enumerable ,管理全局 Ajax 的请求,具有如下方法

register(responder) :注册一个管理 ajax 请求的对象

unregister(responder) :撤销一个管理 ajax 请求的对象

dispatch(callback, request, transport, json) :触发注册的处理对象的方法

这个对象一般很少使用,系统中已经使用如下的代码注册了一个处理对象

Ajax.Responders.register({

  onCreate: function() {

    Ajax.activeRequestCount++;

  },

  onComplete: function() {

    Ajax.activeRequestCount–;

  }

});

Ajax.Base 类:

Ajax 的基类 , 只有一个方法 setOptions(options), 默认 request 参数如下,你可以在新建 Ajax.request 时指定:

method:       'post’,

asynchronous: true,

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

encoding:     ' UTF-8 ,

Ajax.Request 类:

ajax 主要的类,继承自 ajax.base 类,客户端使用 new Ajax.Request(url,options) 调用, options 是一个对象 ( 关联数组 ), options 中可以指定 method asynchronous contentType encoding parameters postBody username,password 等选项,其中 parameters 可以是字符传或者关联数组象,

另外在 options 中还可以通过 requestHeaders 指定 request heads ,其中 requestHeaders 可以是数组 ( 例如 [ Connection , Close , aheadkey , aheadvalue ]) 或一个关联数组;

options 中最重要的选项就是指定 ajax 的回调方法,可以定义 onComplete, onSuccess, onFailure, onException( 执行过程中发生异常调用的方法,主要为 onComplete, onSuccess, onFailure 等回调方法产生的 ) ,甚至可以定义 on404,on503 这样的回调方法,它们的参数为 (transport, json), 其中 transport 为请求的 XMLHttpRequest 对象 , json evalJSON 的结果

如果返回的是一个 javascript 文件 ( 根据返回的 Content-type 头判断 ) 将会执行 evalResponse 方法,另外 Ajax.Request 对象还有一个 evalJSON 方法,取得文件的时候就会执行

这个对象的方法列表如下:

request(url) : 发送请求, new 的时候就已经调用了,所以一般不需要使用

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

getHeader(name) :根据 name 得到 request head

evalJSON(): 执行 getHeader( X-JSON ), 并返回结果

evalResponse(): 执行返回的 responseText 并返回

Ajax.Updater :

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

默认情况下不会执行返回结果中的 javascript ,如果你先执行,你可以指定 options 中的 evalScripts true

默认情况下是替换指定元素的内容,如果你希望是添加,可以指定 options insertion 参数 , insertion 是一个 Insertion.Before Insertion.Top Insertion.Bottom Insertion.After( 将在 dom.js 中介绍 )

Ajax.PeriodicalUpdater :

继承自 Ajax.Base ,周期性的更新一个 html 元素的内容,这个类会调用 Ajax.Updater html 元素进行周期性的更新,使用方法为 new Ajax.PeriodicalUpdater(container, url, options), 参数跟 Ajax.Updater 差不多,其中 options 可以设置 frequency( 默认为 2) decay decay 指的是当请求的内容没有变化的时候, frequency 需要延长的倍数,默认是 1 ,例如如果 decay 设为 2 frequency 设为 3 而内容一直没有变化,则请求的时间依次会变为 3,6,12,24

start(): 开始更新 , 初始化的时候会自动调用

stop(): 停止更新
posted on 2008-07-03 21:46 Peter Pan 阅读(205) 评论(0)  编辑  收藏 所属分类: JS

只有注册用户登录后才能发表评论。


网站导航: