<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Flyingis

    Talking and thinking freely !
    Flying in the world of GIS !
    隨筆 - 156, 文章 - 16, 評論 - 589, 引用 - 0
    數據加載中……

    JavaScript 中的對象(上)

    ??? 作者:Flyingis

    ??? 面向對象語言需要具備三種基本特征:繼承(Inheritance)、多態 (Polymorphism) 、封裝(Encapsulation and Aggregation)。和Java 、C++ 等語言一樣,ECMAScript 被認為是面向對象的,因為它同時支持這些特征。
    ?
    var?obj?=?new?Object();

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

    1? 早期綁定和動態綁定

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

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

    2? 對象類型

    2.1? 原始對象

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

    ??? Array

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

    ??? Date

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

    2.2? Build-in對象

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

    ??? Global

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

    ??? Math

    ???
    Math中有許多屬性和方法可以用于數學計算,和Java中的比較類似。

    2.3? Host 對象

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

    3?
    類成員的訪問方式

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

    4? this
    關鍵字

    ??? this關鍵字是ECMAScript中一個非常重要的概念,通常在對象的方法中使用。

    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

    ??? 當一個變量前面沒有對象或this來引用時,ECMAScript認為該變量是一個本地的或全局變量,于是在本地和全局中去搜尋該變量,如果最后仍沒有找到,將會在alert中輸出null。

    ??? 文章待續……

    posted on 2006-06-30 15:20 Flyingis 閱讀(2356) 評論(0)  編輯  收藏 所屬分類: Web 客戶端技術

    主站蜘蛛池模板: 亚洲伊人久久大香线蕉影院| 性做久久久久免费看| 苍井空亚洲精品AA片在线播放| 亚洲精品无码Av人在线观看国产 | 免费无码A片一区二三区| 免费VA在线观看无码| 亚洲av乱码一区二区三区香蕉 | 中文字幕在线免费看| 亚洲中文字幕乱码一区| 亚洲人成网址在线观看| 国产亚洲人成A在线V网站| 免费看男女下面日出水视频| 又大又黄又粗又爽的免费视频| 3344免费播放观看视频| 亚洲精品一卡2卡3卡三卡四卡| 妞干网在线免费观看| a级日本高清免费看| 亚洲日韩av无码| 最近最好的中文字幕2019免费| 2022国内精品免费福利视频| 亚洲电影国产一区| 亚洲av午夜成人片精品电影| 麻豆最新国产剧情AV原创免费 | 91亚洲国产在人线播放午夜| 亚洲人成精品久久久久| 亚洲av中文无码乱人伦在线咪咕| 亚洲国产综合精品一区在线播放| 亚洲日韩在线第一页| 亚洲乱码日产一区三区| 亚洲一级毛片在线观| 综合偷自拍亚洲乱中文字幕| 九九精品国产亚洲AV日韩| a级黄色毛片免费播放视频| 无码午夜成人1000部免费视频| 全免费毛片在线播放| 亚洲毛片不卡av在线播放一区| 亚洲成人动漫在线| 亚洲色欲啪啪久久WWW综合网| 男性gay黄免费网站| h视频在线观看免费完整版| 四虎永久免费观看|