亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

ASP面向對象編程探討及比較

2019-11-18 19:27:08
字體:
來源:轉載
供稿:網友

asp是Microsoft于較早期推出的動態網頁編程技術,但其結合ADO對數據庫方便快捷的訪問、結合xml、COM/ActiveX等其它技術 實現服務器多層結構的功能使它在今天還有著頑強的生命力,并且依然有著一定的發展。asp.net雖然在架構上完全不同于ASP,但它很多內建對象也是基 于ASP進行擴展的。網上有無數的介紹ASP的文章,卻鮮有介紹ASP面向對象以及與其它語言比較的,這也就是我下決心寫這篇文章的原因。
因為是早期的版本,ASP只提供了很弱的面向對象的接口。眾所周知,ASP的實現語言分為VBScript和javaScript/JScript: 在VBScript中有Class關鍵字,可以用來聲明一個自定義類;Javascript就比較怪,它用一個函數來“聲明”類,然后在該函數里通過 this.PRototype定義屬性,this.func定義方法。這里將以VBScript為主進行討論,VBScript的類聲明是這樣的:
Class name
    statements
End Class
這里statements里可以聲明公有或私有的成員,包括函數、成員和屬性。關于屬性,不得不贊一下微軟的get和set方法,這個在COM中出現 的理念,直到.Net中一直被沿用下來,個人認為對程序員而言,比Java用getProp()、setProp()兩個方法來實現同樣效果要方便直觀得 多。
相比之下,VBScript中的類與php4中的類各有千秋(當然跟最新的PHP5沒法比),VBScript中的類保持了VB的不完全面向對象的 “特性”,它僅僅實現了最基本的構造/析構函數、成員函數、變量、屬性,甚至構造函數不能帶參數。PHP4中則還實現了繼承、函數重載等類的重要性質,也 只有實現了這些,才能稱之為面向對象,才有可能為實現多態提供基礎。但二者均沒有實現類的靜態(static)成員等功能。盡管可以用其它一些變通達到同 樣的功效,但從面向對象的思想出發,這都是不徹底的(由于PHP非常靈活,PHP4中可以通過成員函數的靜態變量來間接實現類的靜態變量;而“::”—— 可以實現類的靜態函數訪問的操作符——在PHP4中沒有嚴格檢查。換句話說,所有的成員函數都可以當成靜態函數訪問,只要你在該函數里不使用成員變量就不 會出錯。VBScript根本沒有實現static,只能用sessionapplication來實現)。所以在平常的使用中,你可以使用 VBScript的自定義類來封裝一些操作,但不要指望它像C++ / Java / .Net那樣為你的面向對象思想服務。
VBScript同樣發揚了VB中默認的參數或變量是引用的好風格。這樣,盡管Script語言中對類型不敏感,但它還能夠達到C/C++里指針/引用同樣的功效,完成很多事情。最基本的,比如說用它定義一個列表(List)的節點類ListNode:
<%
Class ListNode
    Public Content
    Public NextNode

    Private Sub Class_Initialize()
        Content="Node"
        Set NextNode=Nothing
    End Sub
End Class
%>
呵呵,就這么簡單,但不要感到鄙夷,也不要忘記對變量初始值。VB中也差不多,聲明時加上類型就行了。而使用時:
<%
Set nh=new ListNode
Set nh.NextNode=new ListNode
'其它語句……
'遍歷列表
Set n=nh
While Not n is Nothing
    Response.Write n.Content+"<br />"
    Set n=n.NextNode
Wend
%>
如果不加其它代碼,上面的運行結果是兩個“node”。VBScript的自定義類和對象也不外如是,只要你掌握基本的概念,對它有一定了解,就再簡單不過了。再次強調,用Set語句來對對象進行賦值,相當于Java里的賦值,都是獲得一個引用。這比PHP4里默認對象賦值是調用拷貝構造函數來創建一 個新的對象好多了(甚至連obj=new Obj;這樣的語句都會創建兩個對象!如果你想獲得引用的話,要在等號后變量前顯示地加上&),而似乎PHP5也不想修改PHP4的這種做法。
ASP中的Session本身是可以儲存對象的,它可以保存基本變量,數組,自動化對象(Automation Object)等,但在儲存自定義類的對象時會碰到問題。如下面的代碼:
<%
If isempty(Session("node")) Then Set Session("node")=New ListNode
Set n=Session("node")
Response.Write n.Content
%>
還是上面的ListNode這個類,這段代碼意圖在一個用戶會話中只保留一個ListNode的對象。所以在用戶第一次訪問該網頁時,會生成ListNode的一個對象,并保存在Session(“node”)中;后面訪問該網頁時,因為Session(“node”)不為空了,所以不會生成一個新的對象,而是到 Session(“node”)中取出保存的對象。理論上應該也會輸出100,但是問題來了,ASP一直會報錯:
Microsoft VBScript runtime error '800a01b6'
Object doesn't support this property or method: 'n.Content'
用n.Type也會出錯。同樣的代碼翻譯成PHP,運行卻是可以通過的。為什么?
個人分析下來,認為Session可以保存對象是沒錯,只是VBScript中類型轉換的機制太弱,而且沒有顯式的強制類型轉換供用戶使用,無法將 Session(“node”)正確轉換為ListNode類型。因為是自定義的類,我們只能在每個頁面中都出現類的定義語句,這樣在ASP看來,每次讀 取這個頁面時,ListNode類都是一個新類,所以就不認得Session中的這個類的對象了。
結論:盡量不要想到用Session或Application來存儲ASP中自定義類的對象。如果確實需要,可以考慮用COM來編寫類,然后在VBScript中用:Set Session("obj") = Server.CreateObject("YourApp.YourClass")來創建一個對象,然后即可實現上面預想的功能了。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
深夜福利日韩在线看| 亚洲自拍偷拍第一页| 亚洲免费一在线| 在线免费观看羞羞视频一区二区| 欧美一区在线直播| 尤物精品国产第一福利三区| 日韩黄色在线免费观看| 日韩欧美在线一区| 亚洲国产成人在线视频| 欧美一性一乱一交一视频| 亚洲一区二区三区四区视频| 九九热这里只有在线精品视| 欧美国产第二页| 日本成人精品在线| 欧美俄罗斯乱妇| 日韩av网站导航| 大胆欧美人体视频| 亚洲国产成人精品久久久国产成人一区| 亚洲欧美日韩高清| 国产日韩欧美视频在线| 欧美激情xxxxx| 黑人巨大精品欧美一区二区免费| 久久精品亚洲国产| 91精品视频观看| 成人美女av在线直播| 国产91在线播放精品91| 久久久久久久久久久人体| 欧美成年人视频网站| 亚洲国产精品一区二区三区| 在线免费看av不卡| 欧美成人免费va影院高清| 亚洲综合中文字幕在线观看| 精品久久久久久| 97香蕉久久夜色精品国产| 国产ts人妖一区二区三区| 国外成人在线直播| 欧美黑人一区二区三区| 国产综合久久久久久| 日韩欧美在线字幕| 国产精品91一区| 日韩免费视频在线观看| 日韩亚洲在线观看| 久久手机免费视频| 一区二区欧美激情| 91亚洲精品视频| 欧美在线观看日本一区| 伊人精品在线观看| 欧洲亚洲在线视频| 欧美日韩中文在线| 欧美一级高清免费播放| 亚洲老板91色精品久久| 国产亚洲成av人片在线观看桃| 在线看国产精品| 欧美日韩在线视频一区二区| 正在播放国产一区| 亚洲欧美另类自拍| 欧美另类极品videosbest最新版本| 欧洲日本亚洲国产区| 日韩中文在线中文网在线观看| 欧美日韩在线免费| 国产成人综合精品| 亚洲国产日韩欧美在线动漫| 在线观看欧美视频| 亚洲在线免费看| 国产精品av免费在线观看| 亚洲精品视频播放| 日韩国产欧美精品在线| 欧美有码在线观看视频| 欧美噜噜久久久xxx| 国产男人精品视频| 欧美精品亚州精品| 亚洲综合社区网| 日本高清不卡的在线| 成人精品视频99在线观看免费| 日本久久久久久久久久久| 欧美成人性生活| 日韩高清av一区二区三区| 26uuu日韩精品一区二区| 在线成人激情黄色| 国产精品一区二区三区在线播放| 日韩动漫免费观看电视剧高清| 亚洲va欧美va国产综合剧情| 91国产一区在线| 久久香蕉精品香蕉| 国产黑人绿帽在线第一区| 91中文字幕一区| 亚洲精品美女久久久久| 欧美在线视频观看免费网站| 日韩免费在线电影| 欧美激情二区三区| 欧美第一黄网免费网站| 亚洲最大福利网站| 日韩精品高清视频| 亚洲成人av中文字幕| 亚洲天堂男人天堂| 欧美黄色性视频| 国内精品久久久久伊人av| 国产精品欧美在线| 久久久久久18| 美女视频黄免费的亚洲男人天堂| 4388成人网| 精品爽片免费看久久| 欧洲亚洲女同hd| 成人在线视频网| 国产精品久久久久高潮| 亚洲欧美国产日韩天堂区| 精品成人在线视频| 91嫩草在线视频| 久久久久亚洲精品成人网小说| 亚洲男子天堂网| 92看片淫黄大片看国产片| 国产成人精品在线播放| 欧美区二区三区| 欧美一级在线播放| 久久久日本电影| 亚洲欧美日韩中文视频| 国产精品久久久久久久久久ktv| 日韩av电影国产| 国产欧美精品一区二区三区介绍| 日韩国产高清污视频在线观看| 亚洲综合日韩中文字幕v在线| 中文字幕精品视频| 26uuu久久噜噜噜噜| 欧美日韩性视频| 91国在线精品国内播放| 国产成人精品久久亚洲高清不卡| 久久精品国产一区二区电影| 国产精品亚洲美女av网站| 亚洲午夜av电影| 欧美亚洲视频在线看网址| 亚洲欧美日本伦理| 日韩精品视频在线播放| 国产一区二区三区在线观看网站| 91国自产精品中文字幕亚洲| 久久91亚洲精品中文字幕| 最好看的2019的中文字幕视频| 精品免费在线观看| 国产精品狼人色视频一区| 欧美国产日韩一区| 久热精品视频在线免费观看| 欧美裸体男粗大视频在线观看| 亚洲自拍偷拍在线| 国产一区在线播放| 91高清视频免费观看| 日韩亚洲在线观看| 97碰碰碰免费色视频| 欧美高清视频免费观看| 亚洲国产福利在线| 欧美日韩午夜激情| 欧美国产日产韩国视频| 亚洲免费伊人电影在线观看av| 亚洲免费成人av电影| 国产乱肥老妇国产一区二| 亚洲自拍偷拍在线| 国产精品成久久久久三级| 丝袜美腿精品国产二区| 97视频在线观看免费高清完整版在线观看| 欧美—级高清免费播放| 欧美一区二区大胆人体摄影专业网站| 欧美一级大片在线观看| 欧美高清视频免费观看| 在线观看日韩欧美| 成人日韩av在线| 久久久国产精品亚洲一区|