prototype实用篇

  这一篇中总结一下关于prototype的最实用的东西。

  一、资源的下载

    prototype的下载script.aculo.us的下载

  二、prototype的压缩

    在prototype官方网站并没有压缩版的下载。1.6.0.2版是目前最新的版本,大小有123k,用aptana压缩一下有97k,用jsMinifier压缩一下,还有71.8。到网上一查就可以查到jsMinifier了。

  三、最常用的API简介

  $(element1,element2,……)  这个函数没有jQuery强,只是取得元素的引用。

  $$(selector)        跟据一个选择描述符搜索元素

  $A(object)    将一个容器包装成为一个标准数组,我原来不理解,为什么要搞个这个东西,后来才了解,很多东西,名义上是数组,结果并不是纯正的数组,很多数组的函数并不支持。这个函数是很有必要的。

  $F(input)  取表单元素的值,特别像取什么select元素的值,很方便。

  $H(object) 将一个对象包装成为Hash对象,所谓hash对象就是一个键值对的集合,相当于c#中的System.Collection.Generic.Dictionary类。它有一个很有用的用法:var dic=$H(),它可以不传任何参数,这时它就会创建一个空白的Hash对象,有用啊。这就提供了一个javascript版的正规的集合类。当然,javascript中任何对象都是一个集合。这是javascript对象的本质。

  $R(start,end)  多说无益,简单用法如下:$R(1,12)、$R('aa','az')。

  $w(string)   用于把一个字符串拆成一个字符串数组,它的通常用法是:$w("aa bbb ccc ddd").each(……),我看了prototype等其他框架的源代码,常用它代替原来需要用for循环完成的任务。可以说,$w、each使得用循环的机会少了很多。

  Ajax.Request(url,options)  用法如下:new Ajax.Request('xxxx.aspx',{method:'post',onsuccess:……}),用法蛮简单的。

  Array对象的那些扩展我看好像很少用到,没什么用途。用两个each、flattern。flattern的作用是把数组内部的数组拆开来,例如:[1,2,3,[4,5,],6].flattern()的结果是:[1,2,3,4,5,6]。

  Class.create(superclass,methods) 创建类,这个东西经常用到。

  下面来介绍一下Element的扩展中一些经常要用到的API。如下:

  addClassName、removeClassName、toggleClassName、hasClassName,这几个常用到,哪个Ajax框架都实现的。

  setStyle(options) 设置样式,像什么设置元素的宽度、高度、位置都是它了,prototype并没有其他专门的setWdith、setHeight。都是它来代劳,使用很频繁。

  getStyle(name) 取得某个样式的值。

  getWidth()、getHeight()。这两个很有用的。不一定等于ele.getStyle('width')哦。

  up、down、next、previous,向上、向下、向后、向前搜索元素。这个蛮有用的。

  select,这个更常用了。搜索元素。。。例如:el.select('.x-window')。它很常用。

  show、hide、toggle、visible,这几个函数是基础中的基础,不过,如果加入了Effects.js,那么就可以用appear、fade、Effect.toggle(element)来代替了。当然更加可以用blindUp、blindDown、sliderUp、sliderDown等等特效来代替。这个地方是经常要玩的。

  setOpacity设置透明度,这个函数兼容了所有浏览器,好啊。很有用。

  insert、remove、update、replace、,这三个函数的作用就不用多说了,插入元素、删除元素、更新元素。怎么创建一个元素呢?有办法,var el=new Element(tagname,options)就成了。例如要在网页最后插入一个div,办法是:$(document.body).insert(new Element('div',{innerHTML:'这是内容!',color:'red'})),就这么简简,因为insert第二个参数可指定插入的位置,所以,在prototype中没有封装什么append之类的函数。只有一个insert。

  observe,注册事件,注意它是加入监听函数,并不是onxxx=xxxxx。而是addListener。这个区别可能大伙平常都不大注意。用法如下:$('div1').observe('mouseover',function(evt){……})。这个功能也是每个ajax必备的。

  关于Element的封装,常用的就这些,当然,也有childElements,它用于返回所有第一代子元素,不包括孙子,这个有时蛮有用。不同于childNodes。

  Object.extend,这个函数不得不说,它也经常用到,prototype的继承就是通过它来实现的,当然,不要以为它的作用仅用于继承,它本质上是把一个对象的所有属性、函数都复制到另一个对象中。如此而己。在写widgets中经常要用到,例如:options=Object.extend({……},options)。当需要设定options的默认值时,代码经常就需要这样写。总之,这个玩意是高手必备。

  String里面扩展了一大路的函数,我觉得最重要的一个函数就是gsub,它是replace的超级加强版。因为replace的功能实在有限,所以gsub相比而言就相当珍贵了,这个问题在前面分析源代码时就作过详尽至极的讨论。不再赘述。除了一个gsub,就是startsWith、endsWith、include、strip、stripScripts,stripTags等等,还是有一些有用的函数的,不过,大部分平常都用不着。也难怪jQuery对string把这些东西都砍掉。要减肥的话这些的确都可以不要。

  Template还是蛮有用的,模板嘛,它往往可以代码变得很优美。Position、document.viewport之流,往往是在写widgets才会用到的,一般情况可能用不着。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值