欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

類之Prototype.js學習

 更新時間:2007年06月13日 00:00:00   作者:  

Prototype.js作為javascript的成功的開源框架,封裝了很多好用的功能,雖然官方沒提供什么文檔,不過在google上一搜,好多相關的文檔,不過在學習使用的過程中還是碰到了一些問題,希望熟悉的朋友能多加指點,對于prototype.js學習我關注這么幾點,同時針對每點也講講學習的結果和碰到的問題,^_^
   1、類的創(chuàng)建
     prototype.js已經封裝好了,這個很簡單。

var Person=Class.create();

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

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

   對比java,Class.create相當于Class.forName(),initialize相當于構造器,和java的構造器一樣,可以自定義為帶參數性質的。
     可以看到在使用這樣的方式定義class后,它和javascript原來的通過function方式來定義一個類就有明確的區(qū)分了,在這種情況下我們就可以用Class.create來定義類,用function來直接定義函數。
     類通常還涉及靜態(tài)成員(static性質的)和實例成員(需要實例化才可調用)的定義。
     在javascript中這點也非常容易:
     靜態(tài)成員:  

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

實例成員: 

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

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

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

這樣就實現了Student繼承至Person。
     在使用prototype的情況下可以這么實現:

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

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

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

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

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

相關文章

  • javascript prototype 原型鏈

    javascript prototype 原型鏈

    prototype源自法語,軟件界的標準翻譯為“原型”,代表事物的初始形態(tài),也含有模型和樣板的意義。
    2009-03-03
  • Prototype源碼淺析 Enumerable部分之each方法

    Prototype源碼淺析 Enumerable部分之each方法

    在javascript中,根本找不到Enumerable的影子,因為這一塊是Prototype作者從Ruby中借鑒過來的。
    2012-01-01
  • 使用prototype.js進行異步操作

    使用prototype.js進行異步操作

    使用prototype.js進行異步操作...
    2007-02-02
  • Prototype Template對象 學習

    Prototype Template對象 學習

    這里的Template對象其實就是格式化字符串的工具,就像java中的String.format方法。這個對象只提供一個方法evaluate。
    2009-07-07
  • 初學prototype,發(fā)個JS接受URL參數的代碼

    初學prototype,發(fā)個JS接受URL參數的代碼

    初學prototype,發(fā)個JS接受URL參數的代碼...
    2007-01-01
  • Prototype 工具函數 學習

    Prototype 工具函數 學習

    Prototype學習工具函數$H,$R,Try.these,document.getElementsByClassName
    2009-07-07
  • Prototype Object對象 學習

    Prototype Object對象 學習

    該不是一個概念。因為C#中的命名空間后面不會直接跟方法,肯定是接一個對象然后在調用方法,不過和C++中的命名空間倒是有些類似
    2009-07-07
  • Prototype源碼淺析 Enumerable部分(二)

    Prototype源碼淺析 Enumerable部分(二)

    剩下的方法太多,于是分作兩部分。亮點就是$break和$continue,以及grep方法的思想
    2012-01-01
  • Prototype ObjectRange對象學習

    Prototype ObjectRange對象學習

    ObjectRange對象基本就是實現了連續(xù)的數字或者字符串,其中只包含一個方法,include,判斷某個數字或者字符串是否在ObjectRange里。并且ObjectRange對象還混入了Enumerable的方法,所以可以直接在ObjectRange對象上調用Enumerable對象里面的方法。
    2009-07-07
  • Prototype源碼淺析 Number部分

    Prototype源碼淺析 Number部分

    Prototype在原生對象的基礎上擴展,分別是Object,Function,String,Number,Array,Date,前面分析了Object,Function,String,還剩下Number,Array,Date
    2012-01-01

最新評論