手机
当前位置:查字典教程网 >编程开发 >Javascript教程 >类之Prototype.js学习
类之Prototype.js学习
摘要:Prototype.js作为javascript的成功的开源框架,封装了很多好用的功能,虽然官方没提供什么文档,不过在google上一搜,好...

Prototype.js作为javascript的成功的开源框架,封装了很多好用的功能,虽然官方没提供什么文档,不过在google上一搜,好多相关的文档,不过在学习使用的过程中还是碰到了一些问题,希望熟悉的朋友能多加指点,对于prototype.js学习我关注这么几点,同时针对每点也讲讲学习的结果和碰到的问题,^_^

1、类的创建

prototype.js已经封装好了,这个很简单。

varPerson=Class.create();

这样就创建了一个Person类,这个Person类必须提供initialize方法的实现:

Person.prototype={

initialize:function(){

}

};

对比java,Class.create相当于Class.forName(),initialize相当于构造器,和java的构造器一样,可以自定义为带参数性质的。

可以看到在使用这样的方式定义class后,它和javascript原来的通过function方式来定义一个类就有明确的区分了,在这种情况下我们就可以用Class.create来定义类,用function来直接定义函数。

类通常还涉及静态成员(static性质的)和实例成员(需要实例化才可调用)的定义。

在javascript中这点也非常容易:

静态成员:

varPerson={

name:'person',

getName:function(){return'person'}

};

实例成员:

Person.prototype={

childname:'child',

eat:function()

}

上面的Person.getName是可以直接这么调用的,但eat方法则需通过varperson=newPerson();person.eat();的方式来调用。

2、类的继承

类的继承其实javascript本身就支持的,不过prototype提供了一种另外的方法。

按照javascript的支持的实现:

varStudent=Class.create();

Student.prototype=newPerson();

这样就实现了Student继承至Person。

在使用prototype的情况下可以这么实现:

varStudent=Class.create();

Object.extend(Student.prototype,Person.prototype);

子类要增加方法时可使用

Student.prototype.study=function(){};

Object.extend(Student.prototype,{

study:function(){}

});

3、事件机制(对类方法执行的监听和观察)

在事件机制上则碰到了一些疑惑,作为事件机制主要需要提供事件的定义,对于事件的监听以及对于事件的观察。

在javascript中事件需要以on开头,也就是作为事件就需要采用onclick这样类似的命名:

对上面的Student增加一个对外的事件,如:

Student.prototype.study=function(){

this.onstudy();

}

Student.prototype.onstudy=function(){};

这个onstudy就是交给相应的实例去实现的,例如实例采用这样的方式:

functionstudyThis(){

alert("studythis");

}

varstudent=newStudent();

student.onstudy=studyThis();

对于事件通常都希望进行监听和观察,根据prototype提供的bindAsEventListener以及Observe,这么进行了尝试:

study.onstudy=watchStudy.bindAsEventListener(this);

functionwatchStudy(event){

alert("watchstudy");

}

按照事件机制来说,在执行study的时候应该可以看到studythis和watchstudy两个提示,但最后执行后只能看到watchstudy的提示,这是为什么呢?按照listener的概念的话,不应该覆盖原有方法的,不过我看了一下prototype.js的源代码,按照上面的编写方式确实会照成覆盖原方法。

Observe是这么尝试的:

Event.observe(study,'study',watchStudy,false);

按照观察机制来说,应该在执行study的时候会看到两个提示,但最后执行后这行根本就没起到任何作用。

这是为什么呢?

【类之Prototype.js学习】相关文章:

采用CSS和JS,刚好我最近有个站点要用到下拉菜单!

JavaScript中isPrototypeOf函数作用和使用实例

JavaScript对W3C DOM模版的支持情况详解

JQuery实现动态添加删除评论的方法

实用javaScript技术-屏蔽类

jQuery中 prop() attr()使用详解

什么是Node.js?

jQuery常用知识点总结以及平时封装常用函数

在b/s开发中经常用到的javaScript技术

JavaScript中String.prototype用法

精品推荐
分类导航