久久福利_99r_国产日韩在线视频_直接看av的网站_中文欧美日韩_久久一

您的位置:首頁技術文章
文章詳情頁

JS裝飾者模式和TypeScript裝飾器

瀏覽:147日期:2024-03-29 17:46:28
裝飾者模式介紹

裝飾者模式(Decorator Pattern)也稱為裝飾器模式,在不改變對象自身的基礎上,動態增加額外的職責。屬于結構型模式的一種。

使用裝飾者模式的優點:把對象核心職責和要裝飾的功能分開了。非侵入式的行為修改。

舉個例子來說,原本長相一般的女孩,借助美顏功能,也能拍出逆天的顏值。只要善于運用輔助的裝飾功能,開啟瘦臉,增大眼睛,來點磨皮后,咔嚓一拍,驚艷無比。

經過這一系列疊加的裝飾,你還是你,長相不增不減,卻能在鏡頭前增加了多重美。如果你愿意,還可以嘗試不同的裝飾風格,只要裝飾功能做的好,你就能成為“百變星君”。

可以用代碼表示,把每個功能抽象成一個類:

// 女孩子class Girl { faceValue() { console.log(’我原本的臉’) }}class ThinFace { constructor(girl) { this.girl = girl; } faceValue() { this.girl.faceValue(); console.log(’開啟瘦臉’) }}class IncreasingEyes { constructor(girl) { this.girl = girl; } faceValue() { this.girl.faceValue(); console.log(’增大眼睛’) }}let girl = new Girl();girl = new ThinFace(girl);girl = new IncreasingEyes(girl);// 閃瞎你的眼girl.faceValue(); //

從代碼的表現來看,將一個對象嵌入到另一個對象中,相當于通過一個對象對另一個對象進行包裝,形成一條包裝鏈。調用后,隨著包裝的鏈條傳遞給每一個對象,讓每個對象都有處理的機會。

這種方式在增加刪除裝飾功能上都有極大的靈活性,假如你有勇氣展示真實的臉,去掉瘦臉的包裝即可,這對其他功能毫無影響;假如要增加磨皮,再來個功能類,繼續裝飾下去,對其他功能也無影響,可以并存運行。

在JavaScript中增加小功能使用類,顯的有點笨重,JavaScript的優點是靈活,可以使用對象來表示:

let girl = { faceValue() { console.log(’我原本的臉’) }}function thinFace() { console.log(’開啟瘦臉’)}function IncreasingEyes() { console.log(’增大眼睛’)}girl.faceValue = function(){ const originalFaveValue = girl.faceValue; // 原來的功能 return function() { originalFaveValue.call(girl); thinFace.call(girl); }}()girl.faceValue = function(){ const originalFaveValue = girl.faceValue; // 原來的功能 return function() { originalFaveValue.call(girl); IncreasingEyes.call(girl); }}()girl.faceValue();

在不改變原來代碼的基礎上,通過先保留原來函數,重新改寫,在重寫的代碼中調用原來保留的函數。

用一張圖來表示裝飾者模式的原理:

JS裝飾者模式和TypeScript裝飾器

從圖中可以看出來,通過一層層的包裝,增加了原先對象的功能。

TypeScript中的裝飾器

TypeScript 中的裝飾器使用 @expression 這種形式,expression 求值后為一個函數,它在運行時被調用,被裝飾的聲明信息會被做為參數傳入。

Javascript規范里的裝飾器目前處在建議征集的第二階段,也就意味著不能在原生代碼中直接使用,瀏覽器暫不支持。

可以通過babel或TypeScript工具在編譯階段,把裝飾器語法轉換成瀏覽器可執行的代碼。(最后會有編譯后的源碼分析)

以下主要討論TypeScript中裝飾器的使用。

TypeScript 中的裝飾器可以被附加到類聲明、方法、 訪問符(getter/setter)、屬性和參數上。

開啟對裝飾器的支持,命令行編譯文件時:

tsc --target ES5 --experimentalDecorators test.ts

配置文件tsconfig.json

{ 'compilerOptions': {'target': 'ES5','experimentalDecorators': true }}裝飾器的使用

裝飾器實際上就是一個函數,在使用時前面加上@符號,寫在要裝飾的聲明之前,多個裝飾器同時作用在一個聲明時,可以寫一行或換行寫:

// 換行寫@test1@test2declaration//寫一行@test1 @test2 ...declaration

定義face.ts文件:

function thinFace() { console.log(’開啟瘦臉’)}@thinFaceclass Girl {}

編譯成js代碼,在運行時,會直接調用thinFace函數。這個裝飾器作用在類上,稱之為類裝飾器。

如果需要附加多個功能,可以組合多個裝飾器一起使用:

function thinFace() { console.log(’開啟瘦臉’)}function IncreasingEyes() { console.log(’增大眼睛’)}@thinFace@IncreasingEyesclass Girl {}

多個裝飾器組合在一起,在運行時,要注意,調用順序是從下至上依次調用,正好和書寫的順序相反。例子中給出的運行結果是:

’增大眼睛’

’開啟瘦臉’

如果你要在一個裝飾器中給類添加屬性,在其他的裝飾器中使用,那就要寫在最后一個裝飾器中,因為最后寫的裝飾器最先調用。

裝飾器工廠

有時需要給裝飾器傳遞一些參數,這要借助于裝飾器工廠函數。裝飾器工廠函數實際上就是一個高階函數,在調用后返回一個函數,返回的函數作為裝飾器函數。

function thinFace(value: string){ console.log(’1-瘦臉工廠方法’) return function(){ console.log(`4-我是瘦臉的裝飾器,要瘦臉${value}`) }}function IncreasingEyes(value: string) { console.log(’2-增大眼睛工廠方法’) return function(){ console.log(`3-我是增大眼睛的裝飾器,要${value}`) }}@thinFace(’50%’)@IncreasingEyes(’增大一倍’)class Girl {}

@符號后為調用工廠函數,依次從上到下執行,目的是求得裝飾器函數。裝飾器函數的運行順序依然是從下到上依次執行。

運行的結果為:

1-瘦臉工廠方法

2-增大眼睛工廠方法

3-我是增大眼睛的裝飾器,要增大一倍

4-我是瘦臉的裝飾器,要瘦臉50%

總結一下:

寫了工廠函數,從上到下依次執行,求得裝飾器函數。 裝飾器函數的執行順序是從下到上依次執行。類裝飾器

作用在類聲明上的裝飾器,可以給我們改變類的機會。在執行裝飾器函數時,會把類構造函數傳遞給裝飾器函數。

function classDecorator(value: string){ return function(constructor){ console.log(’接收一個構造函數’) }}function thinFace(constructor){ constructor.prototype.thinFaceFeature = function() { console.log(’瘦臉功能’) }}@thinFace@classDecorator(’類裝飾器’)class Girl {}let g = new Girl();g.thinFaceFeature(); // ’瘦臉功能’

上面的例子中,拿到傳遞構造函數后,就可以給構造函數原型上增加新的方法,甚至也可以繼承別的類。

方法裝飾器

作用在類的方法上,有靜態方法和原型方法。作用在靜態方法上,裝飾器函數接收的是類構造函數;作用在原型方法上,裝飾器函數接收的是原型對象。這里拿作用在原型方法上舉例。

function methodDecorator(value: string, Girl){ return function(prototype, key, descriptor){ console.log(’接收原型對象,裝飾的屬性名,屬性描述符’, Girl.prototype === prototype) }}function thinFace(prototype, key, descriptor){ // 保留原來的方法邏輯 let originalMethod = descriptor.value; // 改寫,增加邏輯,并執行原有邏輯 descriptor.value = function(){ originalMethod.call(this); // 注意修改this的指向 console.log(’開啟瘦臉模式’) }}class Girl { @thinFace @methodDecorator(’方式裝飾器’, Girl) faceValue(){ console.log(’我是原本的面目’) }}let g = new Girl();g.faceValue();

從代碼中可以看出,裝飾器函數接收三個參數,原型對象、方法名、描述對象。對描述對象陌生的,可以參考這里;

要增強功能,可以先保留原來的函數,改寫描述對象的value為另一函數。

當使用g.faceValue()訪問方法時,訪問的就是描述對象value對應的值。

在改寫的函數中增加邏輯,并執行原來保留的原函數。注意原函數要用call或apply將this指向原型對象。

屬性裝飾器

作用在類中定義的屬性上,這些屬性不是原型上的屬性,而是通過類實例化得到的實例對象上的屬性。

裝飾器同樣會接受兩個參數,原型對象,和屬性名。而沒有屬性描述對象,為什么呢?這與TypeScript是如何初始化屬性裝飾器的有關。 目前沒有辦法在定義一個原型對象的成員時描述一個實例屬性。

function propertyDecorator(value: string, Girl){ return function(prototype, key){ console.log(’接收原型對象,裝飾的屬性名,屬性描述符’, Girl.prototype === prototype) }}function thinFace(prototype, key){ console.log(prototype, key)}class Girl { @thinFace @propertyDecorator(’屬性裝飾器’, Girl) public age: number = 18;}let g = new Girl();console.log(g.age); // 18其他裝飾器的寫法

下面組合多個裝飾器寫在一起,出了上面提到的三種,還有 訪問符裝飾器、參數裝飾器。這些裝飾器在一起時,會有執行順序。

function classDecorator(value: string){ console.log(value) return function(){}}function propertyDecorator(value: string) { console.log(value) return function(){ console.log(’propertyDecorator’) }}function methodDecorator(value: string) { console.log(value) return function(){ console.log(’methodDecorator’) }}function paramDecorator(value: string) { console.log(value) return function(){ console.log(’paramDecorator’) }}function AccessDecorator(value: string) { console.log(value) return function(){ console.log(’AccessDecorator’) }}function thinFace(){ console.log(’瘦臉’)}function IncreasingEyes() { console.log(’增大眼睛’)}@thinFace@classDecorator(’類裝飾器’)class Girl { @propertyDecorator(’屬性裝飾器’) age: number = 18; @AccessDecorator(’訪問符裝飾器’) get city(){} @methodDecorator(’方法裝飾器’) @IncreasingEyes faceValue(){ console.log(’原本的臉’) } getAge(@paramDecorator(’參數裝飾器’) name: string){}}

運行了這段編譯后的代碼,會發現這些訪問器的順序是,屬性裝飾器 -> 訪問符裝飾器 -> 方法裝飾器 -> 參數裝飾器 -> 類裝飾器。

更詳細的用法可以參考官網文檔:https://www.tslang.cn/docs/handbook/decorators.html#decorator-factories

裝飾器運行時代碼分析

裝飾器在瀏覽器中不支持,沒辦法直接使用,需要經過工具編譯成瀏覽器可執行的代碼。

分析一下通過工具編譯后的代碼。

生成face.js文件:

tsc --target ES5 --experimentalDecorators face.ts

打開face.js文件,會看到一段被壓縮后的代碼,可以格式化一下。

先看這段代碼:

__decorate([ propertyDecorator(’屬性裝飾器’)], Girl.prototype, 'age', void 0);__decorate([ AccessDecorator(’訪問符裝飾器’)], Girl.prototype, 'city', null);__decorate([ methodDecorator(’方法裝飾器’), IncreasingEyes], Girl.prototype, 'faceValue', null);__decorate([ __param(0, paramDecorator(’參數裝飾器’))], Girl.prototype, 'getAge', null);Girl = __decorate([ thinFace, classDecorator(’類裝飾器’)], Girl);

__decorate的作用就是執行裝飾器函數,從這段代碼中能夠看出很多信息,印證上面得到的結論。

通過__decorate調用順序,可以看出來,多個類型的裝飾器一起使用時,順序是,屬性裝飾器 -> 訪問符裝飾器 -> 方法裝飾器 -> 參數裝飾器 -> 類裝飾器。

調用了__decorate函數,根據使用的裝飾器類型不同,傳入的參數也不相同。

第一個參數傳入的都一樣,為數組,這樣確保和我們書寫的順序一致,每一項是求值后的裝飾器函數,如果寫的是@propertyDecorator()則一上來就執行,得到裝飾器函數,這跟上面分析的一致。

類裝飾器會把類作為第二個參數,其他的裝飾器,把原型對象作為第二個參數,屬性名作為第三個,第四個是null或void 0。void 0的值為undefined,也就等于沒傳參數

要記住傳給__decorate函數參數的個數和值,在深入到__decorate源碼中, 會根據這些值來決定執行裝飾器函數時,傳入參數的多少。

好,來看__decorate函數實現:

// 已存在此函數,直接使用,否則自己定義var __decorate = (this && this.__decorate) ||// 接收四個參數: //decorators存放裝飾器函數的數組、target原型對象|類,//key屬性名、desc描述(undefined或null)function(decorators, target, key, desc) { var c = arguments.length, // 拿到參數的個數 r = c < 3 // 參數小于三個,說明是類裝飾器,直接拿到類 ? target : desc === null // 第四個參數為 null,則需要描述對象;屬性裝飾器傳入是 void 0,沒有描述對象。? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; // 如果提供了Reflect.decorate方法,直接調用;否則自己實現 if (typeof Reflect === 'object' && typeof Reflect.decorate === 'function') r = Reflect.decorate(decorators, target, key, desc); else // 裝飾器函數執行順序和書寫的順序相反,從下至上 執行 for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) // 拿到裝飾器函數 r = (c < 3 // 參數小于3個,說明是類裝飾器,執行裝飾器函數,直接傳入類 ? d(r) : c > 3 // 參數大于三個,是方法裝飾器、訪問符裝飾器、參數裝飾器,則執行傳入描述對象 ? d(target, key, r) : d(target, key) // 為屬性裝飾器,不傳入描述對象 ) || r; // 給被裝飾的屬性,設置得到的描述對象,主要是針對,方法、屬性來說的 /*** * r 的值分兩種情況, * 一種是通過上面的 Object.getOwnPropertyDescriptor 得到的值 * 另一種,是裝飾器函數執行后的返回值,作為描述對象。 * 一般不給裝飾器函數返回值。 */ return c > 3 && r && Object.defineProperty(target, key, r),r;};

上面的參數裝飾器,調用了一個函數為__params,

var __param = (this && this.__param) || function (paramIndex, decorator) { return function (target, key) { decorator(target, key, paramIndex); }};

目的是,要給裝飾器函數傳入參數的位置paramIndex。

看了編譯后的源碼,相信會對裝飾器的理解更深刻。

以上就是JS裝飾者模式和TypeScript裝飾器的詳細內容,更多關于JS的資料請關注好吧啦網其它相關文章!

標簽: JavaScript
相關文章:
主站蜘蛛池模板: 亚洲一区二区视频在线播放 | 一级黄色国产 | 97精品国产 | 天天干夜夜拍 | 亚洲免费在线播放 | 国产美女视频一区 | 欧美日韩视频 | 久久久久国产精品一区二区三区 | 亚洲国产精品第一区二区 | 日韩大尺度电影在线观看 | 欧美成人精品一区二区 | 亚洲电影一区二区 | 视频一区二区中文字幕日韩 | 国产二区视频 | 国产乱码精品一区二区三区av | 亚洲国产情侣自拍 | 色综合网址 | 99精品国产热久久91蜜凸 | 精品中文一区 | 久久久www| 九九天堂网| 国产91富婆养生按摩会所 | 狠狠干美女 | 福利片在线观看 | 国产成人精品久久二区二区91 | 真人一级毛片 | 黄色片网站视频 | 99re在线视频 | 国产欧美在线观看 | 国产一区二区三区免费观看 | 欧美一级全黄 | 亚洲欧洲精品成人久久奇米网 | 亚洲免费网站在线观看 | 最新国产视频 | 国产精品毛片久久久久久久 | 久久久精| 午夜影视 | 成人精品视频在线观看 | www.操.com| 日本久久精品 | 啵啵影院午夜男人免费视频 | 久久久久久久国产 | 男女视频免费在线观看 | 久久精品小视频 | 久久久网站 | 青青草综合在线 | 亚洲伊人网站 | 伊人精品影院 | 日本电影网址 | 亚洲成人av一区二区三区 | 亚洲激情在线 | av大片| 国产精久久 | 亚洲精品久久久久国产 | 麻豆一区 | 日韩视频―中文字幕 | 成人蜜桃视频 | 国产精品美女久久久久久免费 | 国产日韩av在线 | 高清久久| 久久91精品 | 性视频网站免费 | 欧美a级成人淫片免费看 | 毛片av在线播放 | 国产高清一区 | 国产日韩一区二区三区 | 亚洲成人免费在线 | 精品久久久久久久久久久久久久 | 日日搞夜夜操 | 亚洲一区欧美一区 | 久久久久久亚洲 | 日本特黄特色aaa大片免费 | 先锋影音在线观看 | 成人久久18| 亚洲lesbianxxxxhd| 看毛片软件 | 在线成人一区 | 亚洲美女性视频 | 久久99精品视频在线观看 | 国产大毛片 | 欧美,日韩,国产精品免费观看 | 久久久精品高清 | 中文字字幕一区二区三区四区五区 | aaaaaa黄色片 | 国产精品欧美日韩在线观看 | 国产亚洲综合一区二区 | 看一级黄色大片 | 天天碰天天操 | 亚洲 成人 av | 亚洲国产二区 | 91人人网| 国产高清在线精品一区二区三区 | 一区二区三区国产精品 | 欧美亚洲一区二区三区 | 亚洲精品福利 | 日韩激情视频一区 | 欧美激情国产日韩精品一区18 | 国产毛片a级 | 天天干天天谢 | 国产综合精品视频 | 久久久久久久久久久久久久av | 一区在线不卡 | 五月激情六月婷婷 | 亚洲性人人天天夜夜摸 | 在线播放亚洲 | 国产精品成人在线观看 | 91精品久久久久久久 | 国产亚洲精品v | 亚洲综合在线视频 | 午夜精品久久久久久久 | 午夜国产精品视频 | 伊人yinren22综合开心 | 在线成人免费观看www | 日本免费在线视频 | 日韩成人| 男女羞羞视频在线观看 | www.涩涩视频 | 亚洲精品视频在线看 | 欧美精品一区三区 | gogo熟少妇大胆尺寸 | 国产精品亚洲精品久久 | 久久99精品久久久久久琪琪 | www视频在线观看 | 欧美日韩一区二区在线观看 | 久久久久久久一区 | 九九色综合 | a级黄色在线观看 | 中文字幕免费视频观看 | 国产在线激情视频 | 午夜色视频在线观看 | 成人在线播放 | 伊人色综合网 | 婷婷综合激情 | 一区二区三区国产 | 久久久久久国产 | 国产h视频在线观看 | 久久亚洲一区二区三区四区 | 欧美成年视频 | 国产精品视频免费观看 | 精品国产91乱码一区二区三区 | 色999精品 | 亚洲成人免费在线 | 91精品国产综合久久久久久蜜臀 | 精品在线播放 | 91在线精品秘密一区二区 | 日韩国产在线观看 | 国产精品视频 | 91 视频网站 | 神马久久久久久久久久 | 亚洲人在线观看视频 | 国产香蕉视频在线播放 | 日韩中文在线播放 | 精品视频一区二区三区四区 | 蜜臀久久99精品久久久无需会员 | 国产成人精品一区二区三区视频 | 好看毛片| 黄色片在线免费观看 | 日韩在线不卡 | 日韩综合色 | 中文字幕av一区二区 | 欧美视频在线观看不卡 | 国产精品成人国产乱一区 | 亚洲超碰av | 亚洲精品乱码久久久久久金桔影视 | 欧美亚洲视频 | 国产精品美女 | 中文字幕一区二区三区不卡 | 国产精品久久久久久二区 | 互换娇妻呻吟hd中文字幕 | 一级欧美 | 欧美色爽 | 久久精品国产亚洲blacked | 久久99亚洲精品 | 免费看的av | 欧美精品成人一区二区三区四区 | 一级一级一级毛片 | 亚洲狠狠久久综合一区77777 | 亚洲一区二区三区日韩 | 亚洲欧美一区二区三区在线 | 一区二区免费视频 | 天天av网 | 国产成在线观看免费视频 | a国产在线| 国产精品婷婷午夜在线观看 | 天堂综合网 | 91久久国产综合久久蜜月精品 | 国产精品网站在线观看 | 成人性视频免费网站 | 中国一级大黄大黄大色毛片 | 久久青| 欧美三级视频 | 国产一级视频免费播放 | 成人午夜精品 | 国精品产品区三区 | 成人国产一区二区 | 国产高清久久 | 日韩3级| 欧美精品一区二区三区四区在线 | 超碰97av| 国产日产精品一区二区三区四区 | 另类五月| 国产成人免费视频网站视频社区 | 成人网久久 | 啪啪tv网站免费入口 | 在线精品国产 | 成人av一区二区三区 | 日韩一区二区福利 | 99国产精品视频免费观看一公开 | 久久综合久久综合久久综合 | 国产精品九九九 | 亚洲一区二区三区在线 | 五月天婷婷激情视频 | 播放一级毛片 | 国产不卡一区 | 99精品免费 | 亚洲视频在线免费观看 | 在线天堂新版最新版在线8 www.国产欧美 | 一区二区三区四区精品 | 91精品国产综合久久久久久蜜臀 | 免费观看日韩一级片 | 日韩欧美高清视频 | 欧美一区二区三区在线观看视频 | 亚洲一区成人 | av在线一区二区三区 | 亚洲大尺度视频 | 国产毛片在线 | 亚洲电影免费 | 久久久久国产一区二区三区 | 日日鲁鲁 | www国产亚洲精品 | 91一区| 国产精品久久久久久久久久99 | 暖暖av| 久久中文字幕视频 | 久久伊人中文字幕 | 美女视频一区二区三区 | 91久久| 欧美| 免费亚洲成人 | 国产乱码一区二区三区在线观看 | 国产一区二区三区久久久 | 午夜欧美一区二区三区在线播放 | 三级视频在线 | 成人福利视频网 | 午夜欧美一区二区三区在线播放 | 国产精品毛片一区二区 | 欧美福利 | 日韩精品一区二区三区在线播放 | 一级黄色av片 | 午夜影视 | 亚洲片在线观看 | 国产一级淫片a级aaa | 激情欧美一区二区 | 欧美精品一二三区 | 久久亚洲一区 | 国产色 | 黄色大片网站在线观看 | 亚洲国产精品网站 | 一区二区三区在线播放 | 一级片在线观看视频 | 国产日韩一区二区 | 99久久久国产精品 | 成人av免费观看 | 91视频播放 | 国产精品亚洲成在人线 | 中文av一区 | 色婷婷影院 | av在线日韩 | 青青草在线视频免费观看 | 欧美日韩久久精品 | 欧美日韩一级二级三级 | 玖色视频 | m豆传媒在线链接观看 | av天空| 国产精品178页 | 日日插日日操 | 一级毛片黄 | 国产精品毛片一区视频播 | 三级黄色片在线播放 | 欧美一区二区久久 | 99久草| 欧美成人免费在线视频 | 久久精品欧美一区二区三区不卡 | 日韩福利在线 | 91视频网| 91精品久久久久久久久久 | 国产成人综合一区二区三区 | 香港黄色录像片 | 久久精品成人一区二区三区蜜臀 | 山岸逢花在线观看 | 欧美一级精品片在线看 | 一级特黄网站 | 亚洲欧美另类久久久精品2019 | 欧美激情在线播放 | www.久久精品 | 欧美精品中文字幕久久二区 | 日本久久精品视频 | 伊人一区 | 美女福利视频网站 | 国产在线不卡视频 | 久久综合久久综合久久综合 | 一级片大全 | 精品无码久久久久久国产 | 国产精品久久九九 | 亚洲福利小视频 | 成人免费一区二区三区视频软件 | 人人射av | 亚洲第1页| 丁香久久 | 亚洲精品久久久久久一区二区 | 在线观看免费黄色 | 成人a视频在线观看 | 特级丰满少妇一级aaaa爱毛片 | 色婷婷综合久久久中字幕精品久久 | 国产精品久久久久一区二区三区 | 久久久久亚洲一区二区三区 | 成人欧美一区二区三区视频xxx | 91日韩欧美 | 久在线看| 久久亚洲综合 | 成av人片在线观看www | 久久久国产一区二区三区 | 日韩中文字幕一区二区 | 国产成人一区 | 亚洲中午字幕 | 欧美一二三四成人免费视频 | 九九在线视频 | 国产成人精品免费视频大全 | 蜜臀91精品国产高清在线观看 | 在线一区二区免费 | 中文字幕 国产精品 | 国产精品www | 一区二区三区免费看 | 中文在线视频 | 日韩一区二区三区在线观看 | 国产中文视频 | 欧美激情一区二区 | 国产精品久久久久久久一区探花 | 在线观看国产一级片 | 一区二区三区成人 | 亚洲一区在线日韩在线深爱 | 在线日韩欧美 | 欧美激情欧美激情在线五月 | 久久机热 | 亚州精品成人 | 国产一区精品在线 | 国产精品夜色一区二区三区 | 国产又粗又长又硬又猛电影 | 国产精品久久久久久久久免费桃花 | 亚洲欧美国产精品久久久久 | 国产一区二区三区久久久 | 欧美精品久久久久久久久久丰满 | 免费av播放 | 98精品国产高清在线xxxx天堂 | 国产一级一级片 | 欧美成人精品一区二区三区 | 国内精品视频一区国产 | 国产天堂在线 | 国产精品久久久久久亚洲调教 | 日本久久久久久 | 日韩精品一区二区三区在线播放 | 日韩超级毛片 | 日韩成人一区 | 欧美色v| 一区二区三区视频 | 黄色操视频 | 亚洲午夜性视频 | a一级免费视频 | 日韩中文字幕一区二区高清99 | 天天射影院 | a国产视频 | 日韩av免费在线观看 | 日韩欧美综合 | 银杏成人影院在线观看 | 欧美性一区二区三区 | 久久久成人精品 | 日本成人黄色网址 | 亚洲精品一区二区网址 | 亚洲成人av一区二区三区 | 人人草天天草 | 免费一级毛片 | 国产96视频 | 国产美女自拍视频 | 国产高清一区二区三区 | www.伊人网 | 欧美日韩精品一区二区在线播放 | 国产高潮在线观看 | 91啪影院 | 久久久99精品免费观看 | 黄色网址av | 91亚洲免费视频 | 国产成人精品免高潮在线观看 | 成人蜜桃视频 | 久久久久久久久久影院 | 日韩欧美精品一区二区三区 | 中文字幕免费看 | 亚洲精品电影网在线观看 | 日本高清视频在线播放 | 成人看的免费视频 | 亚洲人久久 | 91小视频网站 | 国产伦精品久久久一区二区三区 | 亚洲精选一区二区 | 亚洲成人在线视频观看 | 一级特黄色大片 | 国产福利91精品一区二区 | 亚洲精选一区二区 | 狠狠综合 | 91超碰caoporm国产香蕉 | 中文字幕av第一页 | 日韩久久久 | 久久精品久久久久久久久久久久久 | 国产视频中文字幕 | 成人欧美一区二区三区黑人孕妇 | 国产一区免费 | 欧美成年黄网站色视频 | 欧美成人精品一区 | 久久久蜜桃一区二区人 | 不卡二区| 国产中文字幕一区二区三区 | av黄色在线 | 国产无套丰满白嫩对白 | 欧美亚洲另类在线 | 国产日韩欧美 | 国产精品久久久久久久久久久久久 | 日韩免费网站 | 亚洲性网 | a成人在线 | 中国特级毛片 | 国产成人精品一区二区三区视频 | 91福利影院在线观看 | av在线免费观看一区二区 | 亚洲a网| 亚洲久久久 | 免费观看一级特黄欧美大片 | 欧美一区二区三区在线看 | 成年人毛片视频 | av中文字幕在线播放 | 一区二区三区免费 | 国产欧美精品 | 亚洲黄色一区二区 | 欧美性猛交一区二区三区精品 | 情一色一乱一欲一区二区 | 91激情在线 | 日日操夜夜 | 免费的国产视频 | 国产精品久久一区 | 在线国产一区 | 日韩免费观看视频 | 日批免费视频 | 在线观看视频一区二区 | 久久久xxx | 欧美日韩精品一区二区三区 | 国产精品高潮呻吟久久av黑人 | 精品成人在线视频 | 一区二区免费在线视频 | 可以在线观看的黄色 | 极品久久久久久 | 欧美日韩一区二区在线 | 中文字幕日韩专区 | 成人网久久 | 不卡一区二区三区四区 | 91传媒在线播放 | 男人的天堂亚洲 | 精品国产91乱码一区二区三区 | 亚洲精品3区| 特级a做爰全过程片 | 成人不卡 | 精品国产色 | 亚洲精品久久久久久一区二区 | 蜜桃视频在线播放 | 日韩中文一区 | 男女视频一区二区 | 国产在线高清 | 羞羞视频网站免费看 | 99精品国产高清一区二区麻豆 | 久久精品亚洲精品国产欧美 | 成人在线视频一区 | 欧美在线视频一区 | 最新日韩av网址 | 在线日韩一区 | 成人在线免费观看 | 亚洲欧美中文日韩在线v日本 | 啊v在线| 久久国产精品一区 | 九九亚洲 | 久久久久久久久综合 | 免费h视频 | 毛片免费网站 | 毛片久久 | 在线免费观看羞羞视频 | 国产精品第一国产精品 | 日韩视频在线观看中文字幕 | 中文字幕av一区二区 | 久久综合伊人 | 国产黄色大片 | 久久久xxxx| 国产一级毛片电影 | 精品免费国产一区二区三区四区 | 蜜桃视频麻豆女神沈芯语免费观看 | 国产99久久久精品视频 | 亚洲久久久 | 日本a视频| 欧美日韩精品免费观看视频 | 国产不卡视频在线观看 | 九色91视频 | 亚洲欧美日韩国产 | 日日干夜夜干 | 一区二区精品视频 | 成人欧美一区二区三区在线播放 | 91精品国产综合久久久蜜臀粉嫩 | 日韩一区二区三区精品 | 成人三级在线 | av 一区二区三区 | 国产欧美日韩综合精品一区二区 | 国产一区二区三区在线免费 | 国产精品久久精品 | 亚洲欧美精品一区 | 中文字幕一区在线观看视频 | 日韩欧美视频一区 | 国产精品久久久久久久久久久久久 | 国产精品国产三级国产aⅴ 精品91 | 亚洲精品一区二区三区樱花 | 国产探花在线看 | 国产色婷婷精品综合在线播放 | 久久99久久久久 | 色天天综合久久久久综合片 | 日韩www| 天天干天天操天天干 | 日韩欧美一区二区三区免费观看 | 亚洲视频在线观看 | 影音先锋亚洲资源 | 成av在线| 在线一区二区三区做爰视频网站 | 国产免费黄色 | 午夜激情视频在线观看 | 图片区 国产 欧美 另类 在线 | 艳妇荡乳豪妇荡淫 | 日韩国产欧美在线观看 | 国产黄色一级片 | 日韩三级中文字幕 | 国产成人av在线 | 91精品久久久久久久久久 | 亚洲www啪成人一区二区 | 亚洲一区二区三区在线 | 欧美激情第1页 | 97视频久久久 | 久久一区二区三 | 国产美女一区 | 国产亚洲二区 | 午夜精品视频 | 婷婷午夜激情网 | 亚洲精品视频在线免费 | 日本妇人成熟免费视频 | 日本成人黄色网址 | 国产精品日产欧美久久久久 | 欧美日韩一区二区视频在线观看 | 国产成人精品久久 | 日韩在线视频一区 | 欧美日韩不卡合集视频 | 日韩专区在线 | 亚洲精品自拍视频 | 国产在线精品一区 | 天天躁日日躁狠狠躁av麻豆 | 亚洲一区在线日韩在线深爱 | 久久精品欧美一区二区三区不卡 | 国产午夜精品久久 | 久久久久中文字幕 | 久久久国产精品x99av | 91综合视频在线观看 | 国产一区二区在线视频观看 | 日韩另类 | 亚洲视频在线观看 | 久久黄色网 | 国产欧美精品一区二区三区 | 欧美一区二区三区精品 | 国产欧美精品一区二区色综合朱莉 | 欧美a一级 | 91麻豆精品国产91久久久更新资源速度超快 | 草草视频免费 | 国产精品久久久久久亚洲调教 | 午夜免费剧场 | 日韩中文字幕在线视频 | 99国产精品久久久 | 午夜一区二区三区 | 欧美一级黄 | 爱爱日韩| 精品国产一区二区三区高潮视 | 国产精品高清在线观看 | 国产精品国色综合久久 | 国产综合久久 | 九九免费精品视频 | 亚洲成人激情在线观看 | 一区二区亚洲 | 在线观看中文字幕亚洲 | 久久久久久久久久一区二区 | 午夜小电影 | 在线视频91 | 国产精品一区二区不卡 | 综合二区 | 在线精品国产 | 91在线激情 | 欧美一区二区三区视频 | 波多野结衣一区二区三区高清 | 激情久久久| 亚洲欧美日韩国产综合精品二区 | 99久久精品免费看国产一区二区三区 | 亚洲四区 | 久草久草久草 | 精品一区二区视频 | 亚洲欧美激情精品一区二区 | 亚洲人成中文字幕在线观看 | 国产激情精品视频 | 国产99久久久精品视频 | 在线视频一二区 |