精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

JavaScript鏈式結構序列化詳解

開發(fā) 前端
在JavaScript中,鏈式模式代碼,太多太多,下面我們就來一起嘗試實現(xiàn)下。

[[179272]]

一、概述

在JavaScript中,鏈式模式代碼,太多太多,如下:

if_else:

 

  1. if(...){ 
  2.     //TODO 
  3. }else if(...){ 
  4.     //TODO 
  5. }else
  6.     //TODO 

switch:

 

  1. switch(name){ 
  2.     case ...:{ 
  3.         //TODO 
  4.         break
  5.     } 
  6.     case ...:{ 
  7.         //TODO 
  8.         break
  9.     } 
  10.     default:{ 
  11.         //TODO     
  12.     } 

疑問:諸如上述這些鏈式代碼,倘若,我們想將其扁平化鏈式處理呢?如下:

 

  1. //fn1,f2,f3為處理函數(shù) 
  2. _if(fn1)._elseIf(fn2)._else(fn3); 

下面我們就來一起嘗試實現(xiàn)下唄。

二、鏈式代碼扁平化

假如,現(xiàn)在我們有如下鏈式代碼:

 

  1. if(name === 'Monkey'){ 
  2.     console.log('yes, I am Monkey'); 
  3. }else if(name === 'Dorie'){ 
  4.     console.log('yes, I am Dorie'); 
  5. }else
  6.     console.log('sorry, over for ending!'); 

好了,現(xiàn)在我們一步一步將其”扁平化”。

其實看看上面的代碼,不難發(fā)現(xiàn),if…else這種格式,其實就是數(shù)據(jù)結構中的單鏈表,那么,初步利用JavaScript實現(xiàn)單鏈表,如下:

 

  1. var thens = []; 
  2. thens.resolve = function(name){ 
  3.     for(var i = 0, len = this.length; i < len;i++){ 
  4.         if(this[i](name) !== 'next'){ 
  5.             break
  6.         } 
  7.     } 
  8. thens.push(f1, f2, f3); 

其中f1,f2,f3為判斷函數(shù),并且我們假設,如果諸如f1、f2、f3返回’next’時,就繼續(xù)往下查找,否則,停止往下查找。如下:

 

  1. function f1(name){ 
  2.     if(name === 'Monkey'){ 
  3.         console.log('yes, I am Monkey'); 
  4.     }else
  5.         return 'next'
  6.     } 
  7. function f2(name){ 
  8.     if(name === 'Dorie'){ 
  9.         console.log('yes, I am Dorie'); 
  10.     }else
  11.         return 'next'
  12.     } 
  13. function f3(){ 
  14.     console.log('sorry, over for ending!'); 

好了,這就是鏈表的模式。

但是,我們的最終目的是想實現(xiàn)如下這樣的呢?

 

  1. //fn1,f2,f3為處理函數(shù) 
  2. _if(fn1)._elseIf(fn2)._else(fn3); 

你可能會說,將上述代碼改成如下這樣,不就好了嗎?!!

 

  1. thens.push(f1).push(f2).push(f3).resolve(); 

But,JavaScript的push方法返回的是數(shù)組的新長度,而不是數(shù)組對象哦。

So,那我們只能新寫一個add方法,效果和push一樣,但是返回數(shù)組對象。如下:

 

  1. thens.add = function(f){ 
  2.     if(typeof f === 'function'){ 
  3.         this.push(f); 
  4.         return this;         
  5.     }         

測試代碼如下:

 

  1. var thens = []; 
  2. thens.add = function(f){ 
  3.     if(typeof f === 'function'){ 
  4.         this.push(f); 
  5.         return this;         
  6.     }         
  7. thens.resolve = function(name){ 
  8.     for(var i = 0, len = this.length; i < len;i++){ 
  9.         if(this[i](name) !== 'next'){ 
  10.             break
  11.         } 
  12.     }     
  13. thens.add(f1).add(f2).add(f3).resolve(); 

但是,這樣有個缺點,我們是將add、resolve方法綁定在全局變量thens中的,總不能每次創(chuàng)建一個數(shù)組時,都復制粘貼一遍方法吧,所以重構代碼如下:

 

  1. function Slink(){ 
  2.     this.thens = []; 
  3.     this.thens.add = function(f){ 
  4.         if(typeof f === 'function'){ 
  5.             this.push(f); 
  6.             return this;         
  7.         }         
  8.     } 
  9.     this.thens.resolve = function(name){ 
  10.         for(var i = 0, len = this.length; i < len;i++){ 
  11.             if(this[i](name) !== 'next'){ 
  12.                 break
  13.             } 
  14.         }     
  15.     } 

顯然,add,resolve這種公共方法,在每次實例化時,都創(chuàng)建一遍是不科學的,so,利用prototype在原有的基礎上繼續(xù)變形,如下:

 

  1. function Slink(){ 
  2.     this.thens = []; 
  3. Slink.prototype = { 
  4.     add: function(f){ 
  5.             if(typeof f === 'function'){ 
  6.                 this.thens.push(f); 
  7.                 return this;         
  8.             }         
  9.     }, 
  10.     resolve: function(name){ 
  11.             for(var i = 0, len = this.thens.length; i < len; i++){ 
  12.                 if(this.thens[i](name) !== 'next'){ 
  13.                     break
  14.                 } 
  15.             }     
  16.     } 

測試代碼如下:

 

  1. var thens = new Slink(); 
  2. thens.add(f1).add(f2).add(f3); 
  3. thens.resolve(); 

不錯,但是這樣,我們每次都得手動new一個Slink,有點麻煩,所以,我們將new Slink這個過程,封裝到函數(shù)中,如同jQuery一樣,如下:

 

  1. function $go(f){ 
  2.     return new Slink(f); 
  3. function Slink(f){ 
  4.     this.thens = []; 
  5.     this.thens.push(f); 
  6. Slink.prototype = { 
  7.     add: function(f){ 
  8.             if(typeof f === 'function'){ 
  9.                 this.thens.push(f); 
  10.                 return this;         
  11.             }         
  12.     }, 
  13.     resolve: function(name){ 
  14.             for(var i = 0, len = this.thens.length; i < len; i++){ 
  15.                 if(this.thens[i](name) !== 'next'){ 
  16.                     break
  17.                 } 
  18.             }     
  19.     } 

測試代碼如下:

 

  1. $go(f1).add(f2).add(f3).resolve(); 

好了,大功告成,接下來就是語法糖滴問題咯,整理代碼如下:

 

  1. function _if(f){ 
  2.     return new Slink(f); 
  3. function Slink(f){ 
  4.     this.thens = []; 
  5.     this.thens.push(f); 
  6. Slink.prototype = { 
  7.     _elseIf: function(f){ 
  8.             if(typeof f === 'function'){ 
  9.                 this.thens.push(f); 
  10.                 return this;         
  11.             }         
  12.     }, 
  13.     _else: function(f){ 
  14.             return this._elseIf(f); 
  15.     }, 
  16.     resolve: function(name){ 
  17.             for(var i = 0, len = this.thens.length; i < len; i++){ 
  18.                 if(this.thens[i](name) !== 'next'){ 
  19.                     break
  20.                 } 
  21.             } 
  22.             return this;             
  23.     } 

測試代碼如下:

 

  1. _if(f1)._elseIf(f2)._else(f3).resolve(); 

當然,除開利用數(shù)組這種方式,還可以利用閉包,實現(xiàn)鏈式扁平化效果,如下:

 

  1. var func = Function.prototype; 
  2. func._else = func._elseIf = function(fn){ 
  3.     var _this = this
  4.     return function(){ 
  5.         var res = _this.apply(this,arguments); 
  6.         if(res==="next"){  //值為Boolean 
  7.             return fn.apply(this,arguments); 
  8.         } 
  9.         return res; 
  10.     } 

測試代碼如下:

 

  1. function f1(name){ 
  2.     if(name === 'Monkey'){ 
  3.         console.log('yes, I am Monkey'); 
  4.     }else
  5.         return 'next'
  6.     } 
  7. function f2(name){ 
  8.     if(name === 'Dorie'){ 
  9.         console.log('yes, I am Dorie'); 
  10.     }else
  11.         return 'next'
  12.     } 
  13. function f3(){ 
  14.     console.log('sorry, over for ending!'); 
  15. f1._elseIf(f2)._else(f3)('Dorie'); 

三、異步代碼鏈式扁平化

在上面我們討論的都是同步過程,倘若,鏈式調用函數(shù)中有異步情況呢?

什么意思?如下:

 

  1. function f1(name){ 
  2.     setTimeout(function(){ 
  3.         if(name === 'Monkey'){ 
  4.             console.log('yes, I am Monkey'); 
  5.         }else
  6.             return 'next'
  7.         } 
  8.     }, 2000); 
  9. function f2(name){ 
  10.     if(name === 'Dorie'){ 
  11.         console.log('yes, I am Dorie'); 
  12.     }else
  13.         return 'next'
  14.     } 
  15. function f3(){ 
  16.     console.log('sorry, over for ending!'); 

我們將f1利用setTimeout變成了異步,按照上述代碼的邏輯,應該是等f1完全執(zhí)行完畢(包括setTimeout執(zhí)行)后,判斷是否執(zhí)行f2,但真的如此嗎?

測試代碼如下:

  1. _if(f1)._elseIf(f2)._else(f3).resolve(); 

執(zhí)行代碼的結果就是,什么也不輸出。

Why?

因為JavaScript是單線程嘛。

那該怎么解決呢?

由于有異步代碼,且必須在異步代碼后處理后續(xù)的鏈,那么我們就等待異步代碼執(zhí)行完畢后,才執(zhí)行后續(xù)的鏈嘛,如下:

  1. function f1(name){ 
  2.     setTimeout(function(){ 
  3.         if(name === 'Monkey'){ 
  4.             console.log('yes, I am Monkey'); 
  5.         }else
  6.             //處理后續(xù)鏈 
  7.             this.resolve(name, 1);//1代表下一個需處理函數(shù)在數(shù)組中的位置 
  8.         } 
  9.     }.bind(this), 2000); 

好了,由于在函數(shù)中,我們使用了this,其代表Slink對象,且改變了resolve方法,固,需細微調整Slink構造函數(shù)和原型鏈,如下:

  1. function Slink(f){ 
  2.     this.thens = []; 
  3.     this.thens.push(f.bind(this)); 
  4. Slink.prototype = { 
  5.     _elseIf: function(f){ 
  6.             if(typeof f === 'function'){ 
  7.                 this.thens.push(f.bind(this)); 
  8.                 return this;        
  9.             }        
  10.     }, 
  11.     _else: function(f){ 
  12.             return this._elseIf(f.bind(this)); 
  13.     }, 
  14.     resolve: function(name, flag){ 
  15.             for(var i = flag, len = this.thens.length; i < len; i++){ 
  16.                 if(this.thens[i](name) !== 'next'){ 
  17.                     break
  18.                 } 
  19.             } 
  20.             return this;            
  21.     } 

測試代碼如下:

  1. function f1(name){ 
  2.     setTimeout(function(){ 
  3.         if(name === 'Monkey'){ 
  4.             console.log('yes, I am Monkey'); 
  5.         }else
  6.             //處理后續(xù)鏈 
  7.             this.resolve(name, 1);//1代表下一個需處理函數(shù)在數(shù)組中的位置 
  8.         } 
  9.     }.bind(this), 2000); 
  10. function f2(name){ 
  11.     if(name === 'Dorie'){ 
  12.         console.log('yes, I am Dorie'); 
  13.     }else
  14.         return 'next'
  15.     } 
  16. function f3(){ 
  17.     console.log('sorry, over for ending!'); 
  18. _if(f1)._elseIf(f2)._else(f3).resolve('',0); 

哈哈,如果你了解Promise,是不是感覺這么相似呢。

是的,宗旨都一樣,達到異步代碼扁平化目的,不過這里的代碼比Promise要簡約得多啦。

責任編輯:張燕妮 來源: 猴子猿
相關推薦

2009-08-06 11:16:25

C#序列化和反序列化

2009-09-09 15:47:27

XML序列化和反序列化

2022-08-06 08:41:18

序列化反序列化Hessian

2016-09-21 00:15:27

2009-08-19 10:13:22

Remoting序列化

2024-05-06 00:00:00

C#序列化技術

2010-02-22 16:00:22

WCF序列化

2011-06-01 15:05:02

序列化反序列化

2009-08-24 17:14:08

C#序列化

2018-03-19 10:20:23

Java序列化反序列化

2023-12-13 13:49:52

Python序列化模塊

2011-05-18 15:20:13

XML

2010-01-05 16:31:45

.NET Framew

2024-09-25 16:10:05

2013-03-11 13:55:03

JavaJSON

2009-06-14 22:01:27

Java對象序列化反序列化

2011-06-01 14:50:48

2009-08-25 14:24:36

C#序列化和反序列化

2019-11-20 10:07:23

web安全PHP序列化反序列化

2011-06-01 14:26:11

序列化
點贊
收藏

51CTO技術棧公眾號

美国一级黄色录像| 成人黄色片视频| www.黄色av| 亚洲伦伦在线| 中文字幕精品av| 一起草最新网址| 久久精品视频5| 日韩在线不卡| 欧美日韩亚洲系列| 五月天综合网| 亚洲国产精品久久久久久6q| 久久一区中文字幕| 欧美精品一二区| 国产精品视频分类| 欧美家庭影院| 国产日产欧美一区| 国产伦精品一区二区三区高清版| 国产日韩久久久| 亚洲国产美女| 九九精品在线视频| 手机看片国产日韩| 天堂99x99es久久精品免费| 宅男噜噜噜66一区二区66| 人妻av无码专区| 国产免费久久久| 欧美一级专区| 亚洲福利在线播放| 天天干天天操天天玩| 欧产日产国产精品视频| 亚洲美腿欧美偷拍| 亚洲乱码一区二区三区三上悠亚| 天堂av一区二区三区| 国产精品亚洲午夜一区二区三区 | 日韩电影免费在线观看中文字幕 | 88久久精品| 欧美日韩电影在线| 国产精品亚洲a| 草草视频在线| 亚洲高清不卡在线| 国产免费xxx| 国产一区二区女内射| 国产欧美精品久久| 久久乐国产精品| 欧亚乱熟女一区二区在线| 电影中文字幕一区二区| 欧美日韩免费观看一区三区| 日本成人中文字幕在线| 免费看av不卡| 一本大道久久a久久综合婷婷| 免费国产黄色网址| 国产盗摄——sm在线视频| 亚洲高清免费观看高清完整版在线观看| 色爽爽爽爽爽爽爽爽| 黄色网址在线免费| 一区二区三区高清不卡| 在线观看污视频| 人人超在线公开视频| 亚洲精品中文字幕在线观看| 国产一区二区三区播放| 美女尤物在线视频| 五月天精品一区二区三区| 国产 日韩 亚洲 欧美| 超黄网站在线观看| 午夜精品一区二区三区三上悠亚| 国产96在线 | 亚洲| 擼擼色在线看观看免费| 一本色道久久加勒比精品 | 欧洲一区二区在线| 91丨porny丨在线中文 | 日韩精品一区二区三区swag | 欧美极品jizzhd欧美18| 91一区二区三区四区| 久久精品国产一区二区电影| 极品颜值美女露脸啪啪| 亚洲二区免费| 国产高清在线不卡| 国产精品无码天天爽视频| 国产精品99久| 国产精品久久久久久久久久| 91激情在线观看| 国产999精品久久久久久绿帽| 精品欧美一区二区三区久久久| 噜噜噜噜噜在线视频| 国产精品自在欧美一区| 2019国产精品视频| 在线观看中文字幕av| 亚洲欧美bt| 国产精品久久久久久亚洲调教| 一二三区在线播放| 成人爱爱电影网址| 日韩免费一区二区三区| 午夜激情在线| 色猫猫国产区一区二在线视频| 91高清国产视频| 好吊妞视频这里有精品| 中文国产亚洲喷潮| 国产一级免费观看| 亚洲国产精品久久久天堂| 国模私拍一区二区三区| 中文字幕天堂在线| 国产风韵犹存在线视精品| 欧美在线3区| 羞羞污视频在线观看| 色拍拍在线精品视频8848| 丰满人妻一区二区三区大胸| 精品国产乱码久久久久久蜜坠欲下 | 五月天久久久久久| 成人免费在线观看入口| 国产欧美在线一区| 欧美三级一区| 中文字幕亚洲欧美| 久久国产视频播放| 国产精品亚洲一区二区三区在线| 日本免费一区二区三区| www中文字幕在线观看| 欧美日韩国产综合一区二区三区| 精品一区二区视频在线观看| 一区二区日韩欧美| 久久久国产91| 日批视频免费在线观看| 成人福利电影精品一区二区在线观看 | 国产日韩成人内射视频| 波多野结衣欧美| 久久亚洲精品中文字幕冲田杏梨| 日韩熟女一区二区| 91麻豆国产自产在线观看| 久久免费一区| 久草在线视频福利| 欧美一级高清片在线观看| 九九热免费在线| 久久精品二区三区| 久久人人九九| 欧美xxxhd| 亚洲精品国产品国语在线| 久久综合成人网| 国产传媒久久文化传媒| 黄色一级片网址| 外国成人毛片| 久久综合亚洲社区| 一区二区日韩视频| 精品一级毛片| 久久天天躁狠狠躁夜夜躁2014| 日韩乱码一区二区三区| 国产午夜精品一区二区| 日韩精品一区二区三区久久| 亚洲精品国产动漫| 欧洲亚洲免费视频| 欧洲成人av| 色视频欧美一区二区三区| 国产一区二区三区四区五区六区 | 黄网站免费久久| 成人高清在线观看| av观看在线| 日韩写真欧美这视频| 黄色一级免费视频| 丁香婷婷综合激情五月色| 欧美黄色免费网址| 精品国产一区二区三区成人影院 | 精品人人人人| 97高清免费视频| 天堂成人在线视频| 色一情一乱一乱一91av| 性欧美精品男男| 精品一区二区国语对白| 青青草免费在线视频观看| 日韩一区二区三区精品| 久久久亚洲天堂| 青青草视频在线观看| 在线精品亚洲一区二区不卡| 亚洲不卡的av| 国产精品18久久久久久久久久久久| 欧美一级爱爱视频| 啪啪激情综合网| 久久精品成人欧美大片| 亚洲国产精彩视频| 欧美天堂在线观看| 日韩免费av一区| 国产麻豆精品久久一二三| 日韩成人三级视频| 亚洲专区视频| 国产精品永久在线| 久久亚洲资源| 亚洲天堂免费视频| 国产男男gay体育生网站| 亚洲国产视频在线| 久久亚洲无码视频| 国产成+人+日韩+欧美+亚洲| 成人在线看视频| 91精品精品| 久久视频在线观看中文字幕| 日韩一区二区三免费高清在线观看| 萌白酱国产一区二区| 日韩电影免费| 日韩午夜中文字幕| 国产精品无码粉嫩小泬| 亚洲国产精品久久久久婷婷884 | av网站有哪些| 国产一区二区福利视频| 国产精品亚洲a| 国产精品v亚洲精品v日韩精品| 国产精品主播视频| 丰满大乳少妇在线观看网站| 中文亚洲视频在线| 人妻精品无码一区二区| 欧美日韩亚洲另类| 激情高潮到大叫狂喷水| 成人午夜视频在线| 在线看的黄色网址| 国产精品一二| 欧美交换配乱吟粗大25p| 青青草成人影院| 久久久久一区二区| 538任你躁精品视频网免费| 国产精品美女久久久免费| 密臀av在线播放| 欧美极品少妇全裸体| 久草资源在线| 在线亚洲欧美视频| 青青草超碰在线| 亚洲国产精品大全| 亚洲精品久久久久avwww潮水| 欧美精品乱码久久久久久| 日韩精品成人免费观看视频| 亚洲超丰满肉感bbw| 久久久久亚洲av无码专区体验| 国产精品美女久久久久久久网站| 欧美丰满少妇人妻精品| 不卡视频一二三| 久久久久99人妻一区二区三区 | 日本精品一二三| 亚洲电影在线| 国产xxxx振车| 国产精品va| 一卡二卡三卡视频| 亚洲视频分类| 久久99九九| 欧美18xxxx| 精品国产乱码久久久久久郑州公司 | 国产精品久久久久久久小唯西川| 国产美女视频一区二区| 成人免费高清完整版在线观看| 国产原创一区| 国产色婷婷国产综合在线理论片a| 香蕉成人影院| 国产精品自拍网| 日韩成人精品一区二区三区| 国产精品久久久久77777| 狠狠久久综合| 成人激情电影一区二区| 中文幕av一区二区三区佐山爱| 成人激情视频在线| 麻豆国产精品| 国产精品国模大尺度私拍| 露出调教综合另类| 久久综合中文色婷婷| 99精品国产九九国产精品| 91久久久久久久一区二区| 国产精品3区| 99精品在线直播| 久久国产精品免费精品3p| 麻豆av一区二区| 欧美日韩在线网站| 日本黄色播放器| 欧美成人tv| 各处沟厕大尺度偷拍女厕嘘嘘| 久久国产99| 亚洲久久中文字幕| 国产精品一区2区| 偷偷色噜狠狠狠狠的777米奇| 久久久精品综合| 秋霞欧美一区二区三区视频免费 | 日韩亚洲在线观看| 亚洲丝袜精品| 欧美性受xxxx白人性爽| 亚洲成人va| 99久久久久国产精品免费| 卡通动漫国产精品| 日韩精品不卡| 欧美精品啪啪| 人妻无码视频一区二区三区| 国产在线视视频有精品| 中文字幕精品视频在线| 国产精品女同一区二区三区| 国产一级av毛片| 欧美性生交片4| 午夜精品久久久久久久99老熟妇 | 欧美日韩精品一区二区天天拍小说 | 日韩精品视频网站| 国产黄色一区二区三区| 久久婷婷一区二区三区| 极品色av影院| 精品久久中文字幕久久av| 一级黄色短视频| 亚洲精品98久久久久久中文字幕| 日本电影在线观看网站| 性色av一区二区三区免费| 巨大黑人极品videos精品| 国产一区二区视频在线免费观看| 色97色成人| 99爱视频在线| 国产成人av电影在线| 欧美精品日韩在线| 欧美日韩国产一区二区| 99在线精品视频免费观看20| 亚洲片av在线| gogo高清午夜人体在线| 91精品久久久久久久久久久久久| 天堂网av成人| 欧美中日韩在线| 韩国一区二区在线观看| 黄色片网站免费| 精品福利在线视频| www.com欧美| 久久久久北条麻妃免费看| 成人在线网站| 欧美另类一区| 中文日韩欧美| 亚洲av无码一区东京热久久| 中文字幕在线不卡国产视频| 无码人妻丰满熟妇精品| 日韩电影网在线| eeuss鲁一区二区三区| 91入口在线观看| 亚洲欧美日韩高清在线| jizzzz日本| 国产精品嫩草影院com| 波多野结衣毛片| 亚洲欧洲成视频免费观看| 老色鬼在线视频| 国产专区一区二区| 黄色成人av网站| 无码人妻久久一区二区三区蜜桃| 亚洲色图一区二区三区| 一起草av在线| 另类美女黄大片| 成人在线视频区| 亚洲一区 在线播放| 韩国v欧美v日本v亚洲v| 亚洲专区在线视频| 四虎国产精品永久在线国在线| 日本电影一区二区三区| 久久久噜噜噜| 中文字幕在线1| 91国偷自产一区二区三区成为亚洲经典 | 天天鲁一鲁摸一摸爽一爽| 在线播放一区二区三区| 日本韩国在线视频爽| 92裸体在线视频网站| 欧美激情 亚洲a∨综合| 岛国av免费观看| 午夜视频久久久久久| 色呦呦视频在线| 奇米四色中文综合久久| 国产一区二区观看| 狠狠躁狠狠躁视频专区| 1000部国产精品成人观看| 99在线精品视频免费观看软件| 欧美日韩成人网| 美女福利一区| 欧美性猛交久久久乱大交小说| 国产日产欧美精品一区二区三区| 一级片aaaa| 欧美国产视频一区二区| 国产成人福利av| 成人羞羞国产免费网站| 国产精品免费人成网站| 国产麻豆91视频| 国内精品久久久| 国产精品亚洲片在线播放| 手机av在线网| 亚洲一区中文在线| 天堂a√在线| 国产日本欧美一区| 韩国一区二区三区在线观看| 欧美成人午夜精品免费| 国产欧美日韩在线看| 亚洲性在线观看| 欧美劲爆第一页| 国产aⅴ精品一区二区三区久久| 欧美成人三级在线播放| 亚洲国产欧美日韩另类综合| 激情小视频在线| 99在线热播| 久久午夜影视| 69av.com| 亚洲色图综合久久| 电影91久久久| 国产精品亚洲二区在线观看| 亚洲素人一区二区| 青青草娱乐在线| 91gao视频| 日本亚洲三级在线| 国产亚洲精品久久久久久打不开| 亚洲人成电影网站| 日韩影片在线观看| 天天碰免费视频| 亚洲va欧美va人人爽午夜| 免费观看在线黄色网| 欧美不卡福利| 国产成人啪午夜精品网站男同|