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

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

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

    關(guān)于javascript的面向?qū)ο?/a>

    對于javascript的面向?qū)ο笥胁簧僬f法,有的說,javascript不是面向?qū)ο蟮?,有的說javascript是基于對象的,有的說使用javascript可以實(shí)現(xiàn)面向?qū)ο蟆?br />我 查閱了一些資料,包括ECMAscript Language Specification Edition 3 24-Mar-00,似乎應(yīng)該說成javascript是基于原型(prototype-based )的面向?qū)ο螅鳦++,java之類的是基于類的面向?qū)ο?,即面向?qū)ο蟮膶?shí)現(xiàn)方式不同。面向?qū)ο蟛⒉槐厝皇腔赾lass的。一篇文章中提到的面向?qū)ο? 最主要的三個特性
    * Encapsulation(封裝) - Support for method calls on a Javascript object as a member of a Class.
    * Polymorphism(多態(tài))- The ability for two classes to respond to the same (collection of) methods.
    * Inheritance (繼承)- The ability to define the behavior of one object in terms of another by sub-classing.
    在javascript里都可實(shí)現(xiàn)。
    感覺對于理解javascript的面向?qū)ο筇匦?,有這樣幾點(diǎn)需要注意,
    1、將面向?qū)ο笞鳛橐粋€獨(dú)立的通用概念,面向?qū)ο笥胁煌膶?shí)現(xiàn)方式,也有不同的擴(kuò)展。C++的面向?qū)ο蠛蚸ava不完全相同,javascript和他們也不完全相同。
    2、對于java程序員需要知道javascript里的對象和java里所談的對象(實(shí)例)有很大不同。
    3、函數(shù)也是對象,是可以作為構(gòu)造器的對象,是可以產(chǎn)生對象的對象。因為javascript里所謂對象就是指屬性的無序集合。函數(shù)可以添加屬性,所以也是對象。
    4、進(jìn)一步了解new和prototype的定義。
    5、 再對java程序員說一句,對象,在javascript里非函數(shù)的對象,最類似java里的對象(實(shí)例),java里對象有屬性,有方法,在 javascript里對象只有屬性,所謂的方法就是函數(shù)類型的屬性,引用一般屬性可以寫成o.x,也可以寫成o["x"],使用對象的方法也同樣o.f ()可以,o["f"]()也可以。另外你所引用的對象的屬性可以是對象本身的屬性,也可以是該對象的構(gòu)造函數(shù)的原型的屬性。
    6、我以前總是對照java來理解javascript,但現(xiàn)在看理解了C++或C的函數(shù)指針的概念,將javascript類比C或C++似乎更自然些。
    具體一點(diǎn)說:
    對 某函數(shù)對象比如Foo執(zhí)行new操作時,首先會生成一個新對象,一個非函數(shù)類型的對象,然后執(zhí)行Foo,在Foo的函數(shù)體中,this代指新創(chuàng)建的函數(shù), 這種操作稱為將函數(shù)作為構(gòu)造器(constructor)使用,接著還會將該對象與Foo的原型(Prototype)建立聯(lián)系。
    var Foo = function(){
    this.x = "abc";
    this.sayHello1 = function(){alert("hello你個頭!");}
    };
    Foo.sayHello2 = function(){alert("你hello個頭!");}

    Foo.prototype.sayHello3 = function(){alert("你個頭hello!");}

    var foo = new Foo;
    foo.sayHello4 = function(){alert("暈!");};
    foo.sayHello1();
    //如果把Foo當(dāng)作類定義的話,sayHello2可以被理解為靜態(tài)方法
    //但和java不同的是,foo.sayHello2();就會抱錯。
    Foo.sayHello2();
    //在foo的屬性里并沒有sayHello3這個函數(shù)對象,但在foo的構(gòu)造函數(shù)的
    //原型對象里有這個函數(shù)屬性,所以可以這么來調(diào)用,如果foo的構(gòu)造函數(shù)的
    //原型對象里也沒這個屬性的話,就會到這個原型對象的構(gòu)造函數(shù)
    //的原型對象里去找,以此類推。本例沒有體現(xiàn)這一點(diǎn),今天太晚了,
    //下一篇里,我會在介紹javascript的幾個面向?qū)ο蟮膶?shí)現(xiàn)方式里寫個這樣的例子。
    foo.sayHello3();
    foo.sayHello4();
    foo["sayHello4"]();
    alert(foo.x);
    ?

    posted on 2006-09-18 11:43 一農(nóng) 閱讀(396) 評論(0)  編輯  收藏 所屬分類: javascript


    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導(dǎo)航:
     

    公告

    南京 java輔導(dǎo)班 約等于免費(fèi) 詳見yuqiaotech.com

    導(dǎo)航

    <2025年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    統(tǒng)計

    常用鏈接

    留言簿(10)

    隨筆檔案

    文章分類

    文章檔案

    相冊

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲色图在线观看| 不卡一卡二卡三亚洲| 亚洲精品无码久久久久久久| 中文字幕成人免费高清在线视频 | 亚洲处破女AV日韩精品| 一级免费黄色大片| 国外亚洲成AV人片在线观看 | 99精品视频在线观看免费| 国产午夜亚洲精品理论片不卡| 一级做a免费视频观看网站| 久久精品国产亚洲AV不卡| 国产精品高清免费网站| 狠狠色伊人亚洲综合成人| 久久久免费的精品| 激情综合亚洲色婷婷五月APP| 在线观看免费a∨网站| WWW亚洲色大成网络.COM| 亚洲国产精品综合久久网络| 国产伦精品一区二区免费| 亚洲国产精品无码久久久蜜芽| 日本免费在线观看| 亚洲免费观看网站| 又粗又黄又猛又爽大片免费| 精品久久久久久国产免费了| 91亚洲国产成人久久精品网站| 国产精品久久久久久久久久免费| 国产成人亚洲午夜电影| 亚洲国产第一站精品蜜芽| 最近免费中文在线视频| 色天使色婷婷在线影院亚洲| 亚洲人成色777777在线观看| 久久午夜夜伦鲁鲁片免费无码影视| 久久亚洲精品国产亚洲老地址| 亚洲AV永久无码精品一区二区国产| a视频免费在线观看| 日本亚洲精品色婷婷在线影院| 亚洲不卡AV影片在线播放| 99在线热视频只有精品免费| 亚洲人成色777777精品| 久久亚洲精品中文字幕三区| 最近中文字幕免费mv视频8|