爪哇之家

            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            35 隨筆 :: 29 文章 :: 8 評論 :: 0 Trackbacks
          ?? 面向?qū)ο笳Z言需要具備三種基本特征:繼承(Inheritance)、多態(tài) (Polymorphism) 、封裝(Encapsulation and Aggregation)。和Java 、C++ 等語言一樣,ECMAScript 被認(rèn)為是面向?qū)ο蟮模驗(yàn)樗瑫r(shí)支持這些特征。
          ?
          var ?obj? = ? new ?Object();

          ??? 該語句創(chuàng)建了一個(gè)對象,當(dāng)構(gòu)造函數(shù)沒有參數(shù)時(shí),可以省略后面的括號。我們通常是通過對象的引用來進(jìn)行對象操作,當(dāng)一個(gè)對象的引用為null時(shí), ECMAScript將啟動垃圾回收程序刪除該對象,釋放內(nèi)存。當(dāng)一個(gè)對象存在多個(gè)引用時(shí),需要將所有的引用設(shè)置為null來釋放該對象所占用的空間。

          1? 早期綁定和動態(tài)綁定

          ??? 早期綁定是指在對象被實(shí)例化之前對象的屬性和方法已經(jīng)被定義,使得編譯器或解釋器能夠提前編譯機(jī)器碼。Java和VB支持這種特性,但ECMAScript 并非強(qiáng)類型,不支持早期綁定。

          ??? 動態(tài)綁定是指編譯器或解釋器在運(yùn)行時(shí)才知道該對象的具體類型,之前并不會檢查,只會判斷這些屬性和方法是否得到該對象的支持。ECMAScript對所有的變量使用動態(tài)綁定。

          2? 對象類型

          2.1? 原始對象

          ??? ECMA-262 定義不受主機(jī)環(huán)境影響的ECMAScript支持的任意對象為原始對象,簡而言之,原始對象就是ECMA-262定義的引用類型,比較常用的有 Object、Function、String、Boolean、Number、Array、Date。?

          ??? Array

          ???
          Array 有許多常用的方法,很多和Java類似,在此不作介紹。需要注意的是,使用push()和pop()兩個(gè)方法,可以將Array看作一個(gè)棧,遵循后進(jìn)先出 規(guī)則(LIFO)。使用shift()和push()兩個(gè)方法,Array對象即可看作是一個(gè)隊(duì)列,遵循后進(jìn)后出的規(guī)則(LILO)。splice()方 法非常有用,它輕松的實(shí)現(xiàn)了鏈表的一些基本功能,如刪除數(shù)據(jù)項(xiàng)、插入數(shù)據(jù)、替換數(shù)據(jù)。

          ??? Date

          ???
          ECMAScript 中的Date類是基于Java早期版本中的java.util.Date類的,它可以精確表示1970年1月1日(格林威治時(shí)間)前后285616年的任 意時(shí)間。Date是少有的幾個(gè)重寫了toString()和valueOf()方法,并且兩個(gè)方法并不相同的類。valueOf()通常表示精確到毫秒級 的時(shí)間,toString()通常返回個(gè)性化的時(shí)間表示方法,例如相同的時(shí)間在不同瀏覽器下顯示的效果可能不一樣。

          2.2? Build-in對象

          ??? Build-in 對象除了具備原始對象的基本特性外,它在 ECMAScript 程序開始運(yùn)行時(shí)就可以使用,因此可以說任何 Build-in 對象就是原始對象。目前 ECMA-262 只定義了兩個(gè) Build-in 對象: Global 和 Math 。

          ??? Global

          ???
          在ECMAScript 里,沒有函數(shù)可以單獨(dú)存在,所有的函數(shù)都必須是某個(gè)對象的方法。如isNan()、isFinite()、parseInt()、parseFloat ()、encodeURI()、encodeURIComponent()、decodeURI()、decodeURIComponent() 等均是Global對象的方法,除此之外,Global對象還包括一些屬性。

          ??? Math

          ???
          Math中有許多屬性和方法可以用于數(shù)學(xué)計(jì)算,和Java中的比較類似。

          2.3? Host 對象

          ??? 除了原始對象和Build-in對象外,其他對象均是Host對象。所有的BOM和DOM對象均被認(rèn)為是Host對象。

          3?
          類成員的訪問方式

          ???
          在 面向?qū)ο笳Z言程序設(shè)計(jì)中,常見的類成員訪問方式有public、protected和private。在ECMAScript中,只有public一種訪 問方式,對象中所有的屬性和方法都是可見的,因此,在程序設(shè)計(jì)時(shí)需要額外注意系統(tǒng)安全性的問題。在沒有合理的程序規(guī)范之前,程序員在編寫 ECMAScript代碼時(shí),通常使用一定規(guī)范的命名方式來說明該屬性或方法是私有的(僅僅是說明而已,實(shí)際上還是公有的),例如在名稱前后加上下劃線, 或只在名稱前加下劃線。另外,在ECMAScript中沒有static方法。

          4? this
          關(guān)鍵字

          ??? this關(guān)鍵字是ECMAScript中一個(gè)非常重要的概念,通常在對象的方法中使用。

          function ?whatFruit()? {
          ??alert(
          this .color);
          }


          var ?table1? = ? new ?Object;
          table1.fruit?
          = ? " apple " ;
          table1.whatFruit?
          = ?whatFruit;
          var ?table2? = ? new ?Object;
          table2.fruit?
          = ? " pear " ;
          table2.whatFruit?
          = ?whatFruit;
          table1.whatFruit();??
          // 輸出apple
          table2.whatFruit();?? // 輸出pear

          ??? 當(dāng)一個(gè)變量前面沒有對象或this來引用時(shí),ECMAScript認(rèn)為該變量是一個(gè)本地的或全局變量,于是在本地和全局中去搜尋該變量,如果最后仍沒有找到,將會在alert中輸出null。
          posted on 2006-07-16 13:28 爪哇之家 閱讀(136) 評論(0)  編輯  收藏 所屬分類: javascript
          主站蜘蛛池模板: 阜阳市| 渝北区| 贡山| 长顺县| 桂平市| 松溪县| 连州市| 威海市| 卫辉市| 宿迁市| 剑阁县| 凉城县| 报价| 河南省| 久治县| 逊克县| 福清市| 含山县| 宜章县| 通许县| 鄢陵县| 巴彦县| 尚义县| 潼南县| 芦溪县| 枞阳县| 罗城| 都安| 安平县| 日照市| 宣汉县| 前郭尔| 德化县| 岳池县| 抚顺县| 呼伦贝尔市| 平果县| 资兴市| 海南省| 宁阳县| 济宁市|