日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

基础继承机制

發布時間:2024/4/14 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 基础继承机制 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
javascript的一個明顯的優點就在于它可以定義和持有自己的對象。這一點好象是VBScript所無法比擬的。
  有了這一點,可以利用javascript進行更接近于面向對象的程序設計。也許這將使網站開發更有樂趣...
  
  但有個嚴重的缺點!javascript不支持繼承機制。不象Java那樣,支持extends關鍵字(雖然這個關鍵字在javascript中是保留字)。
  
  在微軟的ASP.NET中,javascript才開始提供比較完善的支持。PHP語言當然也有繼承機制的支持,這些都叫我垂青...
  
  不過現在我根本無法說服學校的老頭子們買更好的域名空間,但是我也不想忍受ASP中無繼承機制之苦,所以急中生智,也就有了一些成果!
  
  javascript根本不支持繼承機制!這是肯定的。但是我們可以想辦法做些手腳,模擬一個出來。
廢話說了一堆,先來看一個例子:

?function Person()
?{
?public: // 注意這個public! 其實沒有這樣的用法, 這只是我的習慣. 幸好在實際應用中不會有錯
?this.GetName=Person_mfGetName;

?private: // 和public一樣, 這也是我的習慣
?this.m_strName="Guest";
?}
function Person_mfGetName()
?{
?return this.m_strName;
?}

?var MyPerson=new Person();
?MyPerson.GetName();

?你可以用任何輸出語句來查看結果。當然這只是第一步!
?下面是關鍵一步:繼承!

?function Student() // Extends Class: Person
?{
?EXTENDS: // 我的習慣, 但要切記不能使用小寫字母. 因為extends是javascript中的保留字
?this.Super=Person; // 定義指向其"父類構造器". 這里的Super也不能用小寫形式
?this.Super(); // 調用其"父類構造器". 這樣就可以從"父類"那里"繼承"所有的屬性和方法

?private:
?this.m_nStudentID=0;
?}

?雖然在Student中并沒有看到GetName()方法,但是卻可以調用。因為他已經繼承了Person的GetName()方法。

?var MyStudent=new Student();
?MyStudent.GetName(); // 注意, 調用的是其"父類"的GetName方法, 結果為返回 "Guest".


  關于javascript繼承實現就是這樣。只要牢記兩步:
  
  1: 在"子類"中先定義一個指向"父類"的函數(什么名字都可以,我習慣使用Super)
  2: 隨后調用這個函數
  
  這樣就可以繼承"父類"的所有屬性和方法!
  
  我現在有些懷疑的是,既然extends和super都是保留字,那為什么javascript卻不支持繼承呢?
  不知道有沒有其他更好的辦法?希望各位指點...

轉載于:https://www.cnblogs.com/ufo0303/archive/2006/08/18/480303.html

總結

以上是生活随笔為你收集整理的基础继承机制的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。