2006年11月7日
目前支持HTML、CSS、JavaScript/HTML DOM、XML、Druapl CMS、PHP、Ruby/Rails、Python、Perl、Marcomedia、C/C++,Libraries、Databases、Java,且將來會支持更多的API。
閱讀全文
javascript的多根繼承和多層繼承
上篇文章貼出后又想了兩個問題:
- 能否支持多根繼承?
- 能否支持多層繼承?
仔細一想,多層繼承上篇文章的代碼已經實現。多根繼承則需要進一步完善extend方法。于是有了下面的代碼,使用方法很簡單。只要一句話可以輕松實現對多個父類的繼承。
下面是詳細的示例源代碼。歡迎交流,QQ:27234687 。
讀者可以自行修改后點【測試】按鈕查看輸出結果。
JAVASCRIPT繼承方如此簡單
?????? 看了很多的js繼承方式都覺得不是很好,總是覺得不是很方便,用起來也不順。所以一直在查這方面的資料思考這個問題,終于有所收獲。忍不住要貼出來與大家共享,讓大家一起享受javascript繼承的快樂。
優點:只要聲明一個簡單的函數即可方便使用JAVASCRIPT的繼承,使用方法也只要一行代碼調用繼承方法即可,調用方式非常自然。
????????
下面是示例源代碼:
?? <script>
??? /**
?????? 首先給Object類添加繼承方法extends,
?????? 前兩句起繼承父類的作用,使得調用的子類能夠獲得父類的所有屬性和方法
?????? 后一句保存對一個對父類的引用,以便在需要的時候可以調用父類的方法
?????? 如果不需要使用父類的方法,最后一句可以刪除
???????方法名不能為extends,因為IE認為是關鍵字不讓用火狐下是可以的。屬性superClass也不能用super,也是關鍵字。不然看起來就更舒服了(那就太像java了)。
??? */
??? Object.prototype.extend = function(SuperClass){
????? this.SuperClass=SuperClass;
????? this.SuperClass();
????? this.superClass=new SuperClass();
??? }
???//下面是示例代碼
??? //聲明父類:第一個方法show將得到繼承,第二個方法將被覆蓋
??? function SuperClass(){
????? this.show=function(){
??????? alert('Call SuperClass.show()');
????? }
????? this.override=function(){
??????? alert('Call SuperClass.override() width "superClass.override()"');
????? }
??? }
??? //聲明子類:繼承父類,同時覆蓋了父類的方法override
??? function SubClass(){
????? //調用繼承方法繼承父類的屬性和方法
????? this.extend(SuperClass);
????? this.override=function(){
??????? alert('I have overrided SuperClass.override method.\nCall SubClass.override()');
????? }
??? }
??? //測試繼承的結果:
??? var s=new SubClass();
??? s.show(); //將調用父類的方法
??? s.override();//將調用子類覆蓋后的方法
??? s.superClass.override();//將調用父類的override方法
?</script>