成人性生交大片免费看视频r_亚洲综合极品香蕉久久网_在线视频免费观看一区_亚洲精品亚洲人成人网在线播放_国产精品毛片av_久久久久国产精品www_亚洲国产一区二区三区在线播_日韩一区二区三区四区区区_亚洲精品国产无套在线观_国产免费www

主頁 > 知識(shí)庫 > 一個(gè)ASP創(chuàng)建動(dòng)態(tài)對(duì)象的工廠類(類似PHP的stdClass)

一個(gè)ASP創(chuàng)建動(dòng)態(tài)對(duì)象的工廠類(類似PHP的stdClass)

熱門標(biāo)簽:鄭州語音電銷機(jī)器人官網(wǎng) 重慶外呼電銷系統(tǒng)費(fèi)用 地圖標(biāo)注不完整被罰款 電銷機(jī)器人一個(gè)多少錢 不封卡外呼系統(tǒng)一般多少錢 微信地圖標(biāo)注有什么用 地圖標(biāo)注中心多少錢注冊(cè) 濰坊呼叫中心外呼系統(tǒng)供應(yīng)商 北京大興區(qū)地圖標(biāo)注

最近整理ASP/VBScript代碼,發(fā)現(xiàn)過去的一個(gè)ASP實(shí)現(xiàn)的MVC框架,可惜是個(gè)半成品,效率也成問題,不過發(fā)現(xiàn)里面有些我寫的代碼,感覺還稍稍可以拿出來見人,于是今天作此文以記之。

說是ASP,其實(shí)和VBScript也脫不了干系,VBScript語言傳承于Visual Basic,VB的語法靈活度已經(jīng)不盡如人意了,VBS作為其子集可想而知。神馬反射、自省等先進(jìn)的技術(shù),微軟在.NET中才引入。作為被拋棄的技術(shù),也不奢望微軟能夠提供支持,于是頑固守舊的程序員只有絞盡腦汁的去模仿實(shí)現(xiàn)一些類似的功能。

好吧,我承認(rèn)很長一段時(shí)間我就是頑固守舊派中的一員,今天介紹的就是其中的一項(xiàng)功能,動(dòng)態(tài)創(chuàng)建一個(gè)屬性對(duì)象,屬性對(duì)象姑且這么稱呼,也就是說動(dòng)態(tài)創(chuàng)建的對(duì)象只包含屬性(Properties)。


下面貼出實(shí)現(xiàn)代碼供大家參考:

復(fù)制代碼 代碼如下:

'
' ASP/VBScript Dynamic Object Generator
' Author: WangYe
' For more information please visit
'    
' This code is distributed under the BSD license
'
Const PROPERTY_ACCESS_READONLY = 1
Const PROPERTY_ACCESS_WRITEONLY = -1
Const PROPERTY_ACCESS_ALL = 0

Class DynamicObject
    Private m_objProperties
    Private m_strName

    Private Sub Class_Initialize()
        Set m_objProperties = CreateObject("Scripting.Dictionary")
        m_strName = "AnonymousObject"
    End Sub

    Private Sub Class_Terminate()
        If Not IsObject(m_objProperties) Then
            m_objProperties.RemoveAll
        End If
        Set m_objProperties = Nothing
    End Sub

    Public Sub setClassName(strName)
        m_strName = strName
    End Sub

    Public Sub add(key, value, access)
        m_objProperties.Add key, Array(value, access)
    End Sub

    Public Sub setValue(key, value, access)
        If m_objProperties.Exists(key) Then
            m_objProperties.Item(key)(0) = value
            m_objProperties.Item(key)(1) = access
        Else
            add key,value,access
        End If
    End Sub

    Private Function getReadOnlyCode(strKey)
        Dim strPrivateName, strPublicGetName
        strPrivateName = "m_var" strKey
        strPublicGetName = "get" strKey
        getReadOnlyCode = _
            "Public Function " strPublicGetName "() :" _
            strPublicGetName "=" strPrivateName " : " _
            "End Function : Public Property Get " strKey _
            " : " strKey "=" strPrivateName " : End Property : "
    End Function

    Private Function getWriteOnlyCode(strKey)
        Dim pstr
        Dim strPrivateName, strPublicSetName, strParamName
        strPrivateName = "m_var" strKey
        strPublicSetName = "set" strKey
        strParamName = "param" strKey
        getWriteOnlyCode = _
            "Public Sub " strPublicSetName "(" strParamName ") :" _
            strPrivateName "=" strParamName " : " _
            "End Sub : Public Property Let " strKey "(" strParamName ")" _
            " : " strPrivateName "=" strParamName " : End Property : "
    End Function

    Private Function parse()
        Dim i, Keys, Items
        Keys = m_objProperties.Keys
        Items = m_objProperties.Items

        Dim init, pstr
        init = ""
        pstr = ""
        parse = "Class " m_strName " :" _
                "Private Sub Class_Initialize() : "

        Dim strPrivateName
        For i = 0 To m_objProperties.Count - 1
            strPrivateName = "m_var" Keys(i)
            init = init strPrivateName "=""" _
                Replace(CStr(Items(i)(0)), """", """""") """:"
            pstr = pstr "Private " strPrivateName " : "
            If CInt(Items(i)(1)) > 0 Then ' ReadOnly
                pstr = pstr getReadOnlyCode(Keys(i))
            ElseIf CInt(Items(i)(1)) 0 Then ' WriteOnly
                pstr = pstr getWriteOnlyCode(Keys(i))
            Else ' AccessAll
                pstr = pstr getReadOnlyCode(Keys(i)) _
                        getWriteOnlyCode(Keys(i))
            End If
        Next
        parse = parse init "End Sub : "   pstr "End Class"
    End Function

    Public Function getObject()
        Call Execute(parse)
        Set getObject = Eval("New " m_strName)
    End Function

    Public Sub invokeObject(ByRef obj)
        Call Execute(parse)
        Set obj = Eval("New " m_strName)
    End Sub
End Class

對(duì)于屬性對(duì)象分別提供了Property直接訪問模式和set或者get函數(shù)訪問模式,當(dāng)然我還提供了三種權(quán)限控制,在add方法中使用,分別是PROPERTY_ACCESS_READONLY(屬性只讀)、PROPERTY_ACCESS_WRITEONLY(屬性只寫)和PROPERTY_ACCESS_ALL(屬性讀寫),你可以像下面這樣使用(一個(gè)例子):

復(fù)制代碼 代碼如下:

Dim DynObj
Set DynObj = New DynamicObject
    DynObj.add "Name", "WangYe", PROPERTY_ACCESS_READONLY
    DynObj.add "HomePage", "http://jb51.net", PROPERTY_ACCESS_READONLY
    DynObj.add "Job", "Programmer", PROPERTY_ACCESS_ALL
    '
    ' 如果沒有setClassName,
    ' 新創(chuàng)建的對(duì)象將會(huì)自動(dòng)命名為AnonymousObject
    ' 但是如果創(chuàng)建多個(gè)對(duì)象,就必須指定名稱
    ' 否則就可能引起對(duì)象名重復(fù)的異常
    DynObj.setClassName "User"

    Dim User
    Set User = DynObj.GetObject()
    ' 或者 DynObj.invokeObject User
        Response.Write User.Name
        ' Response.Write User.getName()
 Response.Write User.HomePage
        ' Response.Write User.getHomePage()
 Response.Write User.Job
        ' Response.Write User.getJob()

        ' 改變屬性值
        User.Job = "Engineer"
        ' User.setJob "Engineer"

        Response.Write User.getJob()
    Set User = Nothing

Set DynObj = Nothing


其原理很簡單,就是通過給定的Key-Value動(dòng)態(tài)生成VBS Class腳本代碼,然后調(diào)用Execute執(zhí)行以便于將這段代碼加入到代碼上下文流中,最后再通過Eval新建這個(gè)對(duì)象。

好了,就介紹到這里,今后我可能還會(huì)陸續(xù)公開一些Classic ASP的相關(guān)技巧代碼。

2012年11月7日更新

修復(fù)從舊項(xiàng)目移植過來導(dǎo)致的BUG。

修復(fù)了一些Bug增加了一些特性,我先把最新的代碼貼出來供大家參考:

復(fù)制代碼 代碼如下:
'
' ASP/VBScript Dynamic Object Generator
' Author: WangYe
' For more information please visit
'    
' This code is distributed under the BSD license
'
' UPDATE:
'   2012/11/7
'       1. Add variable key validator.
'       2. Add hasattr_ property for determine
'          if the property exists.
'       3. Add getattr_ property for get property
'          value safety.
'       4. Class name can be accessed by ClassName_ property.
'       5. Fixed some issues.
'
Const PROPERTY_ACCESS_READONLY = 1
Const PROPERTY_ACCESS_WRITEONLY = -1
Const PROPERTY_ACCESS_ALL = 0

Class DynamicObject
    Private m_objProperties
    Private m_strName
    Private m_objRegExp

    Private Sub Class_Initialize()
        Set m_objProperties = CreateObject("Scripting.Dictionary")
        Set m_objRegExp = New RegExp
            m_objRegExp.IgnoreCase = True
            m_objRegExp.Global = False
            m_objRegExp.Pattern = "^[a-z][a-z0-9]*$"
        m_strName = "AnonymousObject"
        m_objProperties.Add "ClassName_", _
            Array(m_strName, PROPERTY_ACCESS_READONLY)
    End Sub

    Private Sub Class_Terminate()
        Set m_objRegExp = Nothing
        If IsObject(m_objProperties) Then
            m_objProperties.RemoveAll
        End If
        Set m_objProperties = Nothing
    End Sub

    Public Sub setClassName(strName)
        If Not m_objRegExp.Test(strName) Then
            ' Skipped Invalid Class Name
            ' Raise
            Exit Sub
        End If
        m_strName = strName
        m_objProperties("ClassName_") = _
            Array(m_strName, PROPERTY_ACCESS_READONLY)
    End Sub

    Public Sub add(key, value, access)
        If Not m_objRegExp.Test(key) Then
            ' Skipped Invalid key
            ' Raise
            Exit Sub
        End If
        If key = "hasattr_" Then key = "hasattr__"
        If key = "ClassName_" Then key = "ClassName__"
        'Response.Write key
        m_objProperties.Add key, Array(value, access)
    End Sub

    Public Sub setValue(key, value, access)
        If m_objProperties.Exists(key) Then
            m_objProperties.Item(key)(0) = value
            m_objProperties.Item(key)(1) = access
        Else
            add key,value,access
        End If
    End Sub

    Private Function getReadOnlyCode(strKey)
        Dim strPrivateName, strPublicGetName
        strPrivateName = "m_var" strKey
        strPublicGetName = "get" strKey
        getReadOnlyCode = _
            "Public Function " strPublicGetName "() :" _
            strPublicGetName "=" strPrivateName " : " _
            "End Function : Public Property Get " strKey _
            " : " strKey "=" strPrivateName _
            " : End Property : "
    End Function

    Private Function getWriteOnlyCode(strKey)
        Dim pstr
        Dim strPrivateName, strPublicSetName, strParamName
        strPrivateName = "m_var" strKey
        strPublicSetName = "set" strKey
        strParamName = "param" strKey
        getWriteOnlyCode = _
            "Public Sub " strPublicSetName _
            "(" strParamName ") :" _
            strPrivateName "=" strParamName " : " _
            "End Sub : Public Property Let " strKey _
            "(" strParamName ")" _
            " : " strPrivateName "=" strParamName _
            " : End Property : "
    End Function

    Private Function parse()
        Dim i, Keys, Items
        Keys = m_objProperties.Keys
        Items = m_objProperties.Items

        Dim init, pstr
        init = ""
        pstr = ""
        parse = "Class " m_strName " :" _
                "Private Sub Class_Initialize() : "

        Dim strPrivateName, strAvailableKeys

        For i = 0 To m_objProperties.Count - 1
            strPrivateName = "m_var" Keys(i)
            init = init strPrivateName "=""" _
                Replace(CStr(Items(i)(0)), """", """""") """:"
            pstr = pstr "Private " strPrivateName " : "
            strAvailableKeys = strAvailableKeys Keys(i) ","
            If CInt(Items(i)(1)) > 0 Then ' ReadOnly
                pstr = pstr getReadOnlyCode(Keys(i))
            ElseIf CInt(Items(i)(1)) 0 Then ' WriteOnly
                pstr = pstr getWriteOnlyCode(Keys(i))
            Else ' AccessAll
                pstr = pstr getReadOnlyCode(Keys(i)) _
                        getWriteOnlyCode(Keys(i))
            End If
        Next

        init = init "m_strAvailableKeys = Replace(""," _
                strAvailableKeys """, "" "", """") : "
        Dim hasstmt
        hasstmt = "Private m_strAvailableKeys : " _
                  "Public Function hasattr_(ByVal key) : " _
                  "hasattr_ = CBool(InStr(m_strAvailableKeys," _
                  " "","" key "","") > 0) : " _
                  "End Function : " _
                  "Public Function getattr_(ByVal key, ByVal defaultValue) : " _
                  "If hasattr_(key) Then : getattr_ = Eval(key) : " _
                  "Else : getattr_ = defaultValue : End If : " _
                  "End Function : "

        parse = parse init "End Sub : " _
            hasstmt pstr "End Class"
    End Function

    Public Function getObject()
        'Response.Write parse
        Call Execute(parse)
        Set getObject = Eval("New " m_strName)
    End Function

    Public Sub invokeObject(ByRef obj)
        Call Execute(parse)
        Set obj = Eval("New " m_strName)
    End Sub
End Class


需要注意的幾個(gè)新特性:

1. 增加了類名和屬性名驗(yàn)證措施,防止畸形的類名或者屬性名導(dǎo)致動(dòng)態(tài)生成的代碼出現(xiàn)語法錯(cuò)誤。不過處理的方式是直接忽略,本來想Raise異常的,但考慮到VBS對(duì)異常處理不是很好的,所以采取忽略策略:

' 有效的類名或?qū)傩悦仨氁宰帜搁_頭

復(fù)制代碼 代碼如下:
Dim DynObj
Set DynObj = New DynamicObject
    DynObj.setClassName "1User" ' 此句將被忽略,因?yàn)轭惷荒芤詳?shù)字開始
    ' 下面這句也會(huì)被忽略,因?yàn)閷傩悦荒芤蕴厥夥?hào)開始
    DynObj.add "%Name", "WangYe", PROPERTY_ACCESS_READONLY
Set DynObj = Nothing

2. 對(duì)于動(dòng)態(tài)對(duì)象增加了hasattr_方法,該屬性用于檢測(cè)此對(duì)象是否支持相應(yīng)的屬性,可以在訪問一個(gè)屬性前先確定該對(duì)象是否支持此屬性:
復(fù)制代碼 代碼如下:

Dim DynObj
Set DynObj = New DynamicObject
    DynObj.add "Name", "WangYe", PROPERTY_ACCESS_READONLY

    Response.Write DynObj.hasattr_("Name") ' True
    Response.Write DynObj.hasattr_("Favor") ' False

Set DynObj = Nothing

3. 對(duì)于動(dòng)態(tài)對(duì)象增加了getattr_方法,此方法可以安全的獲取指定的屬性值,避免因?yàn)閷?duì)象不存在屬性值導(dǎo)致出錯(cuò)。方法原型為getattr_(ByVal propertyName, ByVal defaultValue),參數(shù)propertyName指定屬性的名字,defaultValue是當(dāng)指定屬性不存在是可以返回的默認(rèn)值,比如下面代碼:

復(fù)制代碼 代碼如下:

Dim DynObj
Set DynObj = New DynamicObject
    DynObj.add "Name", "WangYe", PROPERTY_ACCESS_READONLY

    Response.Write DynObj.getattr_("Name", "N/A") ' WangYe
    Response.Write DynObj.getattr_("Favor", "N/A") ' N/A

Set DynObj = Nothing


4. 動(dòng)態(tài)對(duì)象的類名可以通過ClassName_屬性或者getClassName_()方法獲取。

2012年11月12日更新

修復(fù)雙引號(hào)導(dǎo)致構(gòu)造類錯(cuò)誤或?qū)е聢?zhí)行任意代碼的Bug。

您可能感興趣的文章:
  • ASP中類Class相關(guān)內(nèi)容的整理資料
  • ASP類Class入門 推薦
  • ASP 類 Class入門
  • ASPJPEG綜合操作的CLASS類
  • CJJ專用ASP類庫中的某個(gè)class

標(biāo)簽:攀枝花 鶴崗 海南 唐山 揭陽 撫州 汕頭 佛山

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《一個(gè)ASP創(chuàng)建動(dòng)態(tài)對(duì)象的工廠類(類似PHP的stdClass)》,本文關(guān)鍵詞  一個(gè),ASP,創(chuàng)建,動(dòng)態(tài),對(duì)象,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《一個(gè)ASP創(chuàng)建動(dòng)態(tài)對(duì)象的工廠類(類似PHP的stdClass)》相關(guān)的同類信息!
  • 本頁收集關(guān)于一個(gè)ASP創(chuàng)建動(dòng)態(tài)對(duì)象的工廠類(類似PHP的stdClass)的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    久久av日韩| 亚洲欧美日韩一区二区三区在线| 一本色道**综合亚洲精品蜜桃冫| 国产一区欧美二区三区| 欧美成人69av| 中文字幕在线观看二区| 精品亚洲夜色av98在线观看| 91在线观看喷潮| 奇米777第四色| 久久电影一区| 国产精品久久免费观看| 免费看黄网站在线观看| 色一情一区二区| ww国产内射精品后入国产| 国产精品国产精品国产专区蜜臀ah| 国产午夜精品一区二区三区| 亚洲精品国产一区二区在线| 欧美不卡一区二区三区| 久久悠悠精品综合网| 丰满熟女一区二区三区| 成人综合影院| 黄色在线观看网站| 日本在线视频www| 亚洲第一视频在线| 香蕉av一区二区| 国产对白在线| √天堂资源地址在线官网| 高清av免费看| 久久久蜜桃精品| 亚洲网友自拍偷拍| 电影午夜精品一区二区三区| 亚洲一区第一页| 一区二区三区精品视频在线| 99久久国产综合精品女不卡| 日韩一区二区三区高清在线观看| 日本欧美加勒比视频| 99精品在线免费在线观看| 肉色欧美久久久久久久免费看| 午夜久久久久久久久久久| 成人免费在线小视频| 色视频免费网站| 亚洲图片欧美综合| 日韩av一卡| 夜夜操夜夜操| 国产精品久久久免费视频| 精品久久久久久久| 成人网ww555视频免费看| 欧美91精品久久久久国产性生爱| 日韩中文字幕视频在线观看| 91久久人澡人人添人人爽欧美| 香蕉久久久久久| www.久久久久久久| 欧美调教在线| 美女国产一区二区三区| 一二三四在线观看视频| 久久天堂夜夜一本婷婷麻豆| 亚洲超碰在线| 日韩一卡二卡在线| 久久精品亚洲精品国产欧美kt∨| 欧美一区二区三区在线观看免费| 一区福利视频| 日韩欧美视频在线免费观看| 亚洲综合日本| 天天爽夜夜爽一区二区三区| 北条麻妃一区二区三区中文字幕| 麻豆精品国产传媒| 亚洲免费视频成人| 欧美一区视频在线| 欧美在线不卡一区| 一级免费视频| 中文在线不卡| 国产a级全部精品| 日本黄在线观看| 九九爱精品视频| 884aa四虎影成人精品一区| 久久天天躁狠狠躁夜夜av| 欧美三级黄视频| 佐山爱在线视频| 最近中文字幕mv第三季歌词| 中文字幕在线网站| 欧美女优在线视频| 国产福利在线观看| 欧美富婆性猛交| 欧美夫妇交换xxx| 亚洲已满18点击进入久久| 亚洲va欧美va人人爽午夜| 国产精品99一区二区三区| 国产亚洲成精品久久| 日本不卡免费新一二三区| 在线观看91精品国产入口| 九九热在线免费观看| 最新欧美精品一区二区三区| 高清日韩欧美| 欧美人与禽性xxxxx杂性| 全部免费的黄色毛片| 中文字幕中文字幕在线一区| www中文在线| 91久久综合亚洲鲁鲁五月天| 国产馆av播放| 国产厕所精品在线观看| eeuss鲁片一区二区三区在线观看| 特级毛片在线观看| 91精品国产全国免费观看| 欧美成人69av| 午夜精品久久久久99蜜桃最新版| 性xx色xx综合久久久xx| 国产精品久久久久久网站| 美女被男人操网站| 欧美一级做性受免费大片免费| 偷拍国模大尺度视频在线播放| 国产视频一区在线观看一区免费| 亚洲国产天堂| 日本三级欧美三级| 国产精品灌醉下药二区| 日本成人在线电影网| 亚洲第一视频网| 日韩免费高清| 日韩精品一区二区三区中文不卡| 青娱在线视频| 欧美日韩va| 国产成人精品一区二区三区在线| 欧美大片高清| 国内精品久久久久久久影视蜜臀| 国产亚洲精品午夜高清影院| 欧洲美熟女乱又伦| 91精品国产99| 久久久.www| 亚洲乱码av中文一区二区| 免费网站看黄yyy222| 亚洲精品一区二区毛豆| 成人avav影音| 亚洲超碰精品一区二区| 欧美精品1区2区3区| 国产美女在线精品| 国内综合精品午夜久久资源| 久久综合一区二区| 亚洲精品av在线| 成人在线电影网站| 国产香蕉免费精品视频| www久久日com| 免费不卡av在线| 99久久久无码国产精品不卡| 亚洲欧美国产毛片在线| 亚洲一区二区在线观看视频| 免费a级人成a大片在线观看| 国产剧情av在线| hd100%videos日本| 日韩精品久久| 韩国av中文字幕| 成人性生活免费看| 国产av无码专区亚洲av毛网站| 亚洲精品国产setv| 国产成人精品视频ⅴa片软件竹菊| 91pron在线| 波多结衣在线观看| 情侣偷拍对白清晰饥渴难耐| 九九精品视频在线观看九九| 久久国产柳州莫菁门| 日韩一区二区在线看片| www.日韩在线观看| 久久精品一区二区三区不卡牛牛| 欧美黄视频在线观看| 欧美图片自拍偷拍| 亚洲午夜激情视频| 无码日韩精品一区二区免费| 亚洲午夜福利在线观看| 浪潮av在线| 97人人做人人爽香蕉精品| 国产在线成人| 亚洲国产精品久久久久久| 四虎4hutv紧急入口| 中国免费黄视频| 日韩福利视频在线观看| 国产女人18毛片水真多18| 国产污污在线观看| 日韩熟女精品一区二区三区| 国产精品乱子久久久久| 99热这里精品| 天堂va在线| 天天看天天色| 亚洲热在线视频| 美国一区二区| 99国内精品久久久久久久软件| 国产精品一区在线观看| 久久久影视精品| 久久精品国产亚洲一区二区三区| 手机在线理论电影| 国产视频精品xxxx| 在线精品日韩| 亚洲视频 欧洲视频| 欧美黄视频在线观看| 精品国产二区三区| 不卡影院一区二区| 奇米一区二区三区av| 午夜日韩av| 亚洲性生活视频| 国产chinese中国hdxxxx| 亚洲女人18毛片水真多| 一二三四社区欧美黄| 亚洲精品久久久久久国产精华液| 少妇精品一区二区三区| 欧洲精品99毛片免费高清观看| 日本一区二区三区免费观看| 亚洲日穴在线视频| 亚洲乱熟女一区二区| 亚洲黄色高清| 免费在线看黄| 97在线观看视频国产| 国产精品久久乐| 99精品视频播放| 国产欧美一区二区三区久久| 欧美丰满美乳xxx高潮www| 欧美大电影免费观看| 久久综合av免费| 亚洲+变态+欧美+另类+精品| 久久久久久久av| 亚洲国产精品一区二区www| heyzo亚洲| 青青久精品观看视频最新| 亚洲午夜精品久久久中文影院av| 国产精品theporn88| 国产精品嫩草久久久久| 91手机视频在线| 久久精品国产一区二区三区不卡| 两个人日本在线观看视频| 成人黄色免费视频| 亚洲综合中文字幕在线观看| 偷拍视屏一区| 日本高清久久| 中文字幕在线1| 精品一区二区在线看| 国产亚洲毛片| 欧美特级限制片免费在线观看| 亚洲精品一区二区三区蜜桃| 国产精品国产三级国产aⅴ浪潮| 亚洲 欧美 激情 另类| 日韩激情久久| 欧美最猛性xxxxxhd| 亚洲精品一区二区三区婷婷月| 精品视频日韩| 欧美日韩亚洲综合一区二区三区| 久久黄色网页| 91欧美视频网站| 亚洲精品成人无码毛片| 精品人妻人人做人人爽| 最新欧美电影| 日本wwwxxxx| 永久免费看片在线观看| 92福利视频午夜1000合集在线观看| 国产秀色在线www免费观看| 在线视频国产日韩| 免费av网页| 人成在线免费网站| 337p粉嫩大胆噜噜噜噜噜91av| 久久蜜桃资源一区二区老牛| 欧美一区二区三区……| 91麻豆国产福利精品| 在线免费国产视频| 中文资源在线播放| 亚洲一区二区三区日本久久九| 五月婷婷六月香| 国产亚洲精品自拍| 日韩欧美精品网站| 久久综合狠狠综合久久综合88| 成年网站免费视频黄| 国产电影精品久久禁18| 亚洲一区二区三区av无码| 精品无码久久久久成人漫画| 91抖音在线观看| 欧美视频免费看| 国产亲伦免费视频播放| 男女啪啪网站| 亚洲伊人春色| 国产亚洲综合视频| 经典三级一区二区三区视频| 亚洲欧美日韩久久精品| 精品一区二区在线观看视频| 国产成人av电影在线播放| 亚洲色图另类图片| 啦啦啦在线视频免费观看高清中文| 国产在线日韩在线| 激情小说亚洲色图| 欧美在线视频二区| 九九九视频在线观看| 成人福利片在线| 337p粉嫩大胆噜噜噜鲁| 成熟了的熟妇毛茸茸| 国产精品人人做人人爽人人添| 亚洲最大在线| 成人一区二区| 99riav视频在线观看| 艳妇乳肉豪妇荡乳av| 色哟哟视频在线| 91亚洲国产成人精品一区二三| 四季av中文字幕| 91在线免费观看网站| 老司机精品免费视频| 91在线国内视频| 久久一夜天堂av一区二区三区| 丰满人妻一区二区三区53号| 亚洲国产成人精品无码区99| 欧美精品videofree1080p| 成人丝袜18视频在线观看| 亚洲精品suv精品一区二区| 久久久久久一区| 国产日本欧美一区二区三区| 亚洲电影一区二区| 亚洲自拍第三页| 亚洲人成久久| 999精品国产| 国产精品一区二区三区久久久| 在线天堂中文www视软件| 国产精品蜜臀在线观看| 午夜免费电影一区在线观看| 国产一区免费电影| 国产一区精品福利| 国产精品电影网| www.99色.com| 欧美大肥婆大肥bbbbb| 蜜臀av午夜精品| 国产欧美一区二区色老头| 亚洲精品在线视频免费| 国产日韩专区| 亚洲天堂色网站| 久热这里有精品| 日韩一区欧美小说| 亚洲欧美日韩高清| 亚洲精品国产suv一区|