天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

類之Prototype.js學(xué)習(xí)

Prototype.js作為Javascript的成功的開(kāi)源框架,封裝了很多好用的功能,雖然官方?jīng)]提供什么文檔,不過(guò)在google上一搜,好多相關(guān)的文檔,不過(guò)在學(xué)習(xí)使用的過(guò)程中還是碰到了一些問(wèn)題,希望熟悉的朋友能多加指點(diǎn),對(duì)于prototype.js學(xué)習(xí)我關(guān)注這么幾點(diǎn),同時(shí)針對(duì)每點(diǎn)也講講學(xué)習(xí)的結(jié)果和碰到的問(wèn)題,^_^
   1、類的創(chuàng)建
     prototype.js已經(jīng)封裝好了,這個(gè)很簡(jiǎn)單。

var Person=Class.create();

 這樣就創(chuàng)建了一個(gè)Person類,這個(gè)Person類必須提供initialize方法的實(shí)現(xiàn):

Person.prototype={
                initialize:function(){
                }
     };

   對(duì)比Java,Class.create相當(dāng)于Class.forName(),initialize相當(dāng)于構(gòu)造器,和Java的構(gòu)造器一樣,可以自定義為帶參數(shù)性質(zhì)的。
     可以看到在使用這樣的方式定義class后,它和Javascript原來(lái)的通過(guò)function方式來(lái)定義一個(gè)類就有明確的區(qū)分了,在這種情況下我們就可以用Class.create來(lái)定義類,用function來(lái)直接定義函數(shù)。
     類通常還涉及靜態(tài)成員(static性質(zhì)的)和實(shí)例成員(需要實(shí)例化才可調(diào)用)的定義。
     在Javascript中這點(diǎn)也非常容易:
     靜態(tài)成員:  

var Person={
               name:'person',
               getName:function(){return 'person'}
     };

實(shí)例成員: 

Person.prototype={
              childname:'child',
              eat:function()
     }

上面的Person.getName是可以直接這么調(diào)用的,但eat方法則需通過(guò)var person=new Person();person.eat();的方式來(lái)調(diào)用。
2、類的繼承
     類的繼承其實(shí)Javascript本身就支持的,不過(guò)prototype提供了一種另外的方法。
     按照Javascript的支持的實(shí)現(xiàn):

var Student=Class.create();
     Student.prototype=new Person();

這樣就實(shí)現(xiàn)了Student繼承至Person。
     在使用prototype的情況下可以這么實(shí)現(xiàn):

var Student=Class.create();
     Object.extend(Student.prototype,Person.prototype);
子類要增加方法時(shí)可使用  
Student.prototype.study=function(){};

Object.extend(Student.prototype,{
          study:function(){}
});

3、事件機(jī)制(對(duì)類方法執(zhí)行的監(jiān)聽(tīng)和觀察)
     在事件機(jī)制上則碰到了一些疑惑,作為事件機(jī)制主要需要提供事件的定義,對(duì)于事件的監(jiān)聽(tīng)以及對(duì)于事件的觀察。
     在Javascript中事件需要以on開(kāi)頭,也就是作為事件就需要采用onclick這樣類似的命名:
     對(duì)上面的Student增加一個(gè)對(duì)外的事件,如:    

Student.prototype.study=function(){
            this.onstudy();
     }
     Student.prototype.onstudy=function(){};
這個(gè)onstudy就是交給相應(yīng)的實(shí)例去實(shí)現(xiàn)的,例如實(shí)例采用這樣的方式:  
function studyThis(){
         alert("study this");
     }
     var student=new Student();
     student.onstudy=studyThis();
對(duì)于事件通常都希望進(jìn)行監(jiān)聽(tīng)和觀察,根據(jù)prototype提供的bindAsEventListener以及Observe,這么進(jìn)行了嘗試:
study.onstudy=watchStudy.bindAsEventListener(this);
     function watchStudy(event){
           alert("watch study");
     }

按照事件機(jī)制來(lái)說(shuō),在執(zhí)行study的時(shí)候應(yīng)該可以看到study this和watch study兩個(gè)提示,但最后執(zhí)行后只能看到watch study的提示,這是為什么呢?按照l(shuí)istener的概念的話,不應(yīng)該覆蓋原有方法的,不過(guò)我看了一下prototype.js的源代碼,按照上面的編寫(xiě)方式確實(shí)會(huì)照成覆蓋原方法。
     Observe是這么嘗試的:
     Event.observe(study,'study',watchStudy,false);
     按照觀察機(jī)制來(lái)說(shuō),應(yīng)該在執(zhí)行study的時(shí)候會(huì)看到兩個(gè)提示,但最后執(zhí)行后這行根本就沒(méi)起到任何作用。
     這是為什么呢?

JavaScript技術(shù)類之Prototype.js學(xué)習(xí),轉(zhuǎn)載需保留來(lái)源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 大学生高潮无套内谢视频 | 日本免费一区二区三区四区五六区 | 大胸美女被C得嗷嗷叫动态图 | 亚洲另类国产综合在线 | 国产在线精品亚洲视频在线 | 成人免费一级毛片在线播放视频 | 欧美精品3atv一区二区三区 | 大香网伊人久久综合网2020 | 99re久久免费热在线视频手机 | 精品无码久久久久久动漫 | 打卡中国各地奋斗第一线 | 暖暖直播免费观看韩国 | 99久久亚洲精品日本无码 | 国产一区二区青青精品久久 | 我与恶魔的h生活ova | 精品九九视频 | 三级电影免费看 | 国产h视频在线观看网站免费 | 久久精品国产亚洲AV久五月天 | 伦理片a在线线2 | 亚洲欧美日本中文子不卡 | 亚洲精品中文字幕在线 | 性夜影院午夜看片 | 国产亚洲精品久久久999蜜臀 | 久久成人精品免费播放 | jk制服喷水| 国产亚洲美女精品久久久2020 | 一个人看的HD免费高清视频 | 亚洲免费国产在线日韩 | 第九色区av天堂 | 亚洲精品高清在线 | 99精品国产免费观看视频 | 午夜想想爱午夜剧场 | 女人高潮特级毛片 | 中文字幕无线观看不卡网站 | 久久婷婷国产五月综合色啪最新 | 亚洲免费视频在线 | 亚洲精品第一页 | 爱穿丝袜的麻麻3d漫画acg | 国产人妻人伦精品熟女麻豆 | 亚洲综合国产在不卡在线 |