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

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

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

    herodby
    技術 筆記
    posts - 14,  comments - 14,  trackbacks - 0

    ??
    ?? javascript 是一種基于原型的語言,沒有顯示的繼承符號,它有2種隱式的方式可以實現面向對象中的繼承:
    ???1 .???在子類中顯示的調用父類的構造函數.
    ??????????例子:
    ??????????????function? parent ()
    ?????????????{
    ????????????????????this.first = parentFirst;
    ????????????????????this.second = parentSecond;?
    ??????????????}
    ????????????? function child()
    ??????????????{
    ?????????????????????this.inherrit = parent;
    ?????????????????????this.inherrit();
    ?????????????????????this.second = childSecond;
    ????????????}
    ????????????? function parentFirst()
    ???????????{
    ??????????????????alert(" parent First method call !");
    ????????????}
    ???????????function parentSecond()
    ????????????{
    ??????????????????alert(" parent second method call !");
    ????????????}
    ??????????? function childFirst()
    ????????????{
    ??????????????????alert("child first method call !");
    ????????????}
    ????????????function childSecond()
    ????????????{
    ??????????????????alert("child second method call !");
    ????????????}
    ????????????function? printClass()
    ????????????{
    ??????????????????var?newObj = new child();
    ????????????????? newObj.first();
    ??????????????????newObj.second();
    ????????????}
    ????????????printClass();
    ?????????????發現最后打印出來結果是 parent first method call !?? child second method????call !
    ??????????我們可以看到,first 和second 方法最先在parent類中定義,在child類中 second方法又被重載了.child類的構造函數的前2行的作用就是做了一個簡單的原始繼承操作.
    先把parent的原型賦給child的inherrit方法,執行完parent的構造函數后parent的屬性就全在child的屬性列表里了.因為child中是用this來調用parent的構造函數的,javascript解釋器會把parent中的this,child中的this 理解成一個作用域下的this,所以就產生了繼承效果.
    ? 2.???繼承的第二種方式:? prototype方式.
    ??????? 把父類對象賦給 子類的prototype屬性.
    ??????? 把我們的子類改一下:
    ????????function child()
    ????????{
    ?????????????????????this.second = childSecond;
    ?????????}
    ?????????加入?? child.prototype = new?parent;這一行語句,執行,發現和第一種方式得到同樣的結果.
    ??????? 用prototype 方式繼承比調用構造函數方式更靈活.用prototype方式可以實現動態繼承,比如你用prototype方式給父類動態增加一個屬性或者方法,那么子類自動就會獲得這個屬性或者方法.??
    ???????????在javascript中你可以隨意的給對象增加屬性或者方法,但是當你給一個實例化的對象增加屬性的時候,這個增加的屬性只屬于這個實例,例如:
    ?? var newClass = new subClass();
    ? newClass.addprop = "新增屬性";
    如果想為該類的所有實例都增加一個屬性或者方法,要用prototype,? 例子
    ?? var newClass = new child();
    ? child.prototype.addprop = "新增屬性";
    ? 這樣newClass里就會有addprop這個屬性了.
    這也是我們給javascript內部對象增加屬性或者方法的方式,比如 String.prototype.toString={return "aaa";},不過javascript的內部對象的prototype屬性都是只讀的,所以只能增加內部對象的屬性,不能修改.
    ????? 突然感覺倒?prototype,用處原來如此之多,上邊寫的不過是其中一小步分啊.


    ??

    posted on 2006-08-09 17:30 鄧兵野 閱讀(1349) 評論(1)  編輯  收藏 所屬分類: javascript

    FeedBack:
    # re: javascript 基于原型的知識--如何實現繼承
    2008-09-28 16:53 | hellen
    如果把代碼貼全就更明了了  回復  更多評論
      

    <2006年8月>
    303112345
    6789101112
    13141516171819
    20212223242526
    272829303112
    3456789

    常用鏈接

    留言簿(2)

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 91大神免费观看| 久久免费国产精品| 182tv免费视视频线路一二三| 亚洲区小说区图片区QVOD| 国产99久久久国产精免费| 久久亚洲色一区二区三区| 成a人片亚洲日本久久| 一本无码人妻在中文字幕免费| 亚洲午夜电影在线观看高清 | 国产亚洲精品不卡在线| jizz免费在线影视观看网站| a级亚洲片精品久久久久久久| 免费看少妇高潮成人片| 亚洲欧洲精品一区二区三区| 99无码人妻一区二区三区免费| 中文字幕亚洲综合小综合在线| 成年人免费的视频| 亚洲国产午夜精品理论片在线播放 | 亚洲精品无码日韩国产不卡?V| 一区二区三区免费看| 国产A在亚洲线播放| 4399影视免费观看高清直播| 成人区精品一区二区不卡亚洲| 国产成人3p视频免费观看| 四虎影视在线看免费观看| 亚洲成a人片在线观看无码专区| 91在线手机精品免费观看| 亚洲欧美日韩中文字幕一区二区三区 | 亚州免费一级毛片| 亚洲色无码国产精品网站可下载| www.亚洲色图.com| 亚洲国产老鸭窝一区二区三区| 免费在线观看视频网站| 老子影院午夜伦不卡亚洲| 中国亚洲女人69内射少妇| 日韩欧毛片免费视频| 国产综合成人亚洲区| 亚洲av福利无码无一区二区| 成年人网站在线免费观看| 久久久久国色AV免费观看| 精品亚洲成在人线AV无码|