本博客已经转移至www.mozlite.com,可能不会及时更新和关注留言记录,mvc请加群88794325(已满),8781765ASP.NET(MVC)讨论二群

[Prototype.js1.5.1_rc2]prototype.js入门

  在最近的一个项目里,经常需要用到js,而我的JS又不是很强,更没办法的是此项目的老大居然没有选择一个很好的开源类库来帮忙一些工作。同时由于这是一个新版本所以也没有用到AJAX效果,所以对脚本就没有什么依赖性,我考虑过ASP.NET AJAX 1.0的脚本,并为以后的AJAX开发做好准备,但是那么大的一个类库老大能答应吗?而且也不是那么好用,微软的东西总让人感觉有点吃力,动不动就来一个版本!当然很好用的类库很多,其实我很早就盯上Prototype了,只是没有时间来学习没办法,今天碰到了很多脚本问题,所以再也没办法不去学习了!OK让我们在这漫漫长夜中共同奋进吧!

Class

  面向对象编程对于我们程序员来说已经不陌生了,虽然我还没有完全理解这个东东,就知道“太极生两仪,两仪生万象!”万物皆为对象。在脚本中运用面向对象编程首先要懂得就是类的创建和继承,在prototype.js中为我们封装好了方法,我们只要懂得去用它就好了。

  创建一个累很简单,代码如下:
      var xdotnet=Class.create();
 
  继承一个方法,即将一个基类中的所有元prototype(我也不知道怎么命名,哎,不够专业啊!)复制到当前类中,这样就实现了继承关系。

  继承一个类:
     1. Object.extend(class.prototype, baseClass.prototype);
     2. Object.extend(class.prototype, baseClassInstance);

  是不是很简单啊,在我们的编程中运用面向对象来编程首先要创建一个类,就是声明一个变量然后应用prototype.js中的Class类的create()方法创建一个类。如果这个类继承一个基类,则就用上述的方法即Object.extend()来实现继承关系。

Object

  下面我们来看看Prototype.js中对Object的扩展,Object是万物的始祖,万物皆有其而生,所有对象都继承此类。在JS中对现有对象的扩展分为两种,一种是对其prototype的扩展,这样相当于添加实例方法;一种是以静态方法扩展。

  1.Object.extend:上面已经说过事先继承的一个方法,就是将一个类的protorype或对象实例复制到当前类中,实现继承;

  2.Object.clone(object) :返回一个对象的clone版本,其实是执行Object.extent方法把object中的方法属性copy到一个新对象中,然后返回这个对象;

  3. Object.inspect(object) : 调用object的inspect(如果定义了)或toString方法,返回一个对象的字符串表示 ;
 
  4.Object.keys(object): 返回一个对象的所有属性和方法名称组成的数组 ;

  5.Object.values(object):返回一个对象的所有属性和方法的值组成的数组 ;

Function

  在javasctipt中this关键字始终指向调用该函数的对象或者指向使用call,apply方法指定的对象,了解决使用javascript面向对象风格编程中this的引用问题,Prototype.js定一个了两个方法绑定于函数上,也就是对Function对象的扩展。
Function.prototype.bind = function() {
  
var __method = this, args = $A(arguments), object = args.shift();
  
return function() {
    
return __method.apply(object, args.concat($A(arguments)));
  }
}

Function.prototype.bindAsEventListener 
= function(object) {
  
var __method = this, args = $A(arguments), object = args.shift();
  
return function(event) {
    
return __method.apply(object, [( event || window.event)].concat(args).concat($A(arguments)));
  }
}

Number

  我们在写脚本时经常会对数字进行一些运算和转换,但是有时候要写一个很长的函数才能写出来,有时候一下子就解决了,在Prototype.js中也对Number进行了扩展,下面来看看扩展的一些方法:

  1.toColorPart:把数字转换为可以用于表示color的16进制值 ;

  2.succ: 返回num++, 但不改变num本身的值,其实就是 return num+1 ;

  3.times:对从0到这个数字循环调用一个函数;

  4.toPaddedString:按所填写的进制来转换当前Number对象,默认为十进制,不足length长度前面添加0。

  5.toJSON:如果当前Number对象为NaN,正负无穷大则返回null,否则返回当前的String对象。

Date

  toJSON:输出当前时间,格式:FullYear-Month-Date"T"Hours:Minutes:Seconds,其中"T"为字母将时间和日期隔开。

Try

  Try对象提供了一个方法these, 这个方法接受一个函数类型的参数列表,然后轮流执行这些函数,当其中一个函数没有产生错误时,就停止执行,并且返回这个函数返回的值。

PeriodicalExecuter

   这个对象是对setInterval方法的简单封装,使用方法如下:
   var a=new PeriodicalExecuter(callback, frequency );
   a.stop();
   其中callback指要执行的函数名;frequency指每次执行的时间间隔要停止的话,调用这个对象的stop方法就可以了 a.stop()。

   我想应该对Prototype.js有一个简单的认识,对于这种脚本而言如果你长久都没有用到这个,那我想能有几个人能够记住呢?实践才是真理,现在我的工资定下来了,虽然没有达到我的标准但是还是留下来了,不是因为别的,我喜欢OpenSource。既然定下来也准备留下来那其他的邀请也应该...安心的干,下一个目标睡觉! 

关于作者:网魂小兵

文章出处:http://xdotnet.cnblogs.com

本文可以随意转载,摘抄等非商业用途。

为了尊重作者成果,在转载和摘抄的时候请留下作者名称和出处。

posted @ 2007-04-04 01:55  网魂小兵  Views(4704)  Comments(20Edit  收藏  举报