精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

亚洲一级免费观看| 国产精品入口日韩视频大尺度| 在线成人精品视频| 日本不良网站在线观看| 久久蜜桃av一区二区天堂| 国产精品久久久久高潮| 色在线观看视频| 日韩系列在线| 91精品国产综合久久婷婷香蕉| 亚洲精品无码国产| 东热在线免费视频| 国产在线精品免费| 91av视频在线观看| 日韩影院一区二区| 国产在线日韩精品| 精品久久久久一区二区国产| 蜜臀久久99精品久久久酒店新书| 182tv在线播放| 国产三级精品视频| 国产精品二区三区四区| 夜夜嗨av禁果av粉嫩avhd| 亚洲美女一区| 免费av一区二区| www亚洲色图| 欧美激情极品| 日韩一区二区精品在线观看| 日本熟妇人妻中出| 黄在线观看免费网站ktv| 亚洲精品欧美激情| 亚洲欧美影院| 男人av在线| 成人av一区二区三区| 91av一区二区三区| 91免费视频播放| 蜜臀va亚洲va欧美va天堂| 欧美一区二区.| 国产成人在线观看网站| 国产综合色产| 久久亚洲一区二区三区四区五区高| 色一情一交一乱一区二区三区| 草草视频在线一区二区| 欧美影片第一页| 午夜免费精品视频| 芒果视频成人app| 狠狠色狠狠色综合日日五| 日韩美女爱爱视频| 神马午夜伦理不卡 | 麻豆tv在线| 亚洲国产精品av| 日韩欧美精品久久| 黄色av网站在线看| 久久久国际精品| 欧美日韩亚洲免费| 黄色电影免费在线看| 久久综合久色欧美综合狠狠| 免费电影一区| 国产在线高清| 中文字幕二三区不卡| 午夜一区二区三区| 午夜在线视频| 亚洲色图丝袜美腿| 黄黄视频在线观看| 黑人极品ⅴideos精品欧美棵| 亚洲综合免费观看高清在线观看| 欧洲精品在线播放| 国产在线美女| 日本精品一区二区三区高清| 91激情视频在线| 四虎影视成人精品国库在线观看| 3atv一区二区三区| 成人做爰69片免费| 亚洲色图美女| 宅男66日本亚洲欧美视频| 五月婷婷综合激情网| 最新精品国产| 欧美男男gaytwinkfreevideos| 欧美一区二区国产| 18深夜在线观看免费视频| 北条麻妃一区二区三区在线| 亚洲男人天天操| 欧美福利在线视频| 欧美91视频| 欧美在线一级va免费观看| 久久精品偷拍视频| 国产在线播放一区三区四| 成人看片视频| 久久天堂电影| 亚洲乱码一区二区三区在线观看| 日本丰满少妇xxxx| 成人国产精选| 精品国产乱码久久久久久蜜臀| 国产精品无码一区二区三区免费| 日韩av有码| 久久男人资源视频| 亚洲精品毛片一区二区三区| 国产精品一区二区免费不卡| 就去色蜜桃综合| 国产黄网站在线观看| 精品久久久久久久久久久久| 99热一区二区| 婷婷精品在线观看| 久久久国产成人精品| 日韩av大片在线观看| 国产一区二区久久| 日产精品久久久一区二区| 麻豆视频网站在线观看| 黑人巨大精品欧美一区二区免费 | 亚洲女成人图区| 国产午夜手机精彩视频| 久久精品男女| 成人综合色站| 91色精品视频在线| 丰满人妻一区二区三区四区53| 久久影音资源网| 樱空桃在线播放| 玛雅亚洲电影| 亚洲第一精品夜夜躁人人爽| 国产精品suv一区二区88| 一区二区三区四区五区精品视频| 国产精品视频在线播放| 无码国产精品一区二区色情男同| 亚洲视频小说图片| 欧美婷婷精品激情| 少妇无套高潮一二三区| 丝袜老师在线| 欧美va在线播放| 5566中文字幕| 97在线观看免费高| 久久最新视频| 精品一区国产| 国产精品一区hongkong| 欧美一级爆毛片| 乱老熟女一区二区三区| 日韩电影在线观看一区| 蜜桃91精品入口| 久热在线观看视频| 亚洲国产精品人久久电影| 激情综合五月网| 国产一区二区三区高清播放| 99re99热| 性欧美video另类hd尤物| 在线看片第一页欧美| 久久影视中文字幕| 国产无遮挡一区二区三区毛片日本| 国产精品成人久久电影| 国产成人av毛片| 久久久久久欧美| 欧美在线 | 亚洲| 午夜欧美2019年伦理| 国产成人av无码精品| 999亚洲国产精| 久久精品美女| 国产精品极品美女在线观看| 亚洲丝袜在线视频| 日韩精品在线一区二区三区| 欧美激情在线观看视频免费| 日韩精品无码一区二区三区免费| 国产成人三级| 国产欧美日韩高清| 91网页在线观看| 欧美日韩一区二区三区高清 | 九九精品在线播放| 精品人妻一区二区三区三区四区| 亚洲最新在线观看| 88av在线播放| 久久天堂成人| 中文字幕一区二区中文字幕 | 日韩一区二区麻豆国产| 国产真实乱偷精品视频| 26uuu另类欧美| 青梅竹马是消防员在线| 超碰国产精品一区二页| 中文字幕亚洲综合久久筱田步美| 人人妻人人澡人人爽欧美一区双 | 欧美一级免费看| 青青九九免费视频在线| 在线观看日韩高清av| 欧美a级片免费看| 成人一级视频在线观看| 91猫先生在线| 久久一区91| 成人欧美视频在线| 性欧美gay| 蜜月aⅴ免费一区二区三区 | 久久久噜噜噜久噜久久| 久青青在线观看视频国产| 在线播放91灌醉迷j高跟美女| 免看一级a毛片一片成人不卡| 26uuu国产电影一区二区| 一个色综合久久| 影音先锋国产精品| 亚洲va久久久噜噜噜久久狠狠 | 欧美乱妇20p| 久久久久久久久久99| 久久久久亚洲综合| 国产人妻精品久久久久野外| 午夜在线视频观看日韩17c| 手机在线视频你懂的| 丝袜美腿综合| 91九色偷拍| 99re这里只有精品视频首页| 韩国中文字幕av| 黄色日韩精品| 一本一道久久久a久久久精品91 | 欧美成ee人免费视频| 99久久久成人国产精品| 欧美一区二区视频97| caopo在线| 永久555www成人免费| 人妻va精品va欧美va| 91.成人天堂一区| 视频一区二区三区四区五区| 亚洲美腿欧美偷拍| 国产黄色录像视频| 91蜜桃在线免费视频| 日韩精品xxx| 久久精品国产一区二区| 免费av网址在线| 亚洲精品乱码| 国产高清不卡无码视频| 久久人人88| 日韩久久精品一区二区三区| 国产欧美啪啪| 99久久精品无码一区二区毛片 | 日本在线观看视频网站| 亚洲同性同志一二三专区| 四虎国产精品成人免费入口| 91在线观看免费视频| 激情av中文字幕| 国产精品自拍在线| 五月天丁香花婷婷| 久久精品二区亚洲w码| 日本女优爱爱视频| 男女av一区三区二区色多| 国产欧美日韩网站| 亚洲一级二级| 日本熟妇人妻xxxx| 欧美日本久久| 欧美日韩视频免费| 欧美69视频| 国产精品第157页| 激情成人亚洲| 久久99久久久久久| 亚洲乱码国产乱码精品天美传媒| 欧美亚洲国产激情| 视频一区视频二区视频三区视频四区国产 | 亚洲欧美久久久| 亚洲熟妇av一区二区三区| 奶水喷射视频一区| 欧美婷婷精品激情| 美女久久久精品| 毛片毛片毛片毛| 国产精品自拍在线| 久草免费资源站| 99久久免费视频.com| 性久久久久久久久久久| 91小视频在线观看| 亚洲性猛交xxxx乱大交| 国产精品视频在线看| 蜜桃视频最新网址| 亚洲精品一二三四区| 麻豆视频成人| 少妇高潮一区二区三区99| 国产精品人成电影| 国产成人免费精品| 成人久久久久久| 一区二区三区在线观看av| 亚洲第一主播视频| 国产成人在线免费观看视频| 都市激情亚洲色图| 销魂美女一区二区| 欧美久久久久久蜜桃| 国产成人久久精品77777综合| 欧美mv日韩mv国产网站app| 日本黄色三级视频| 亚洲色图激情小说| 老司机精品影院| 欧美激情在线有限公司| 美女网站在线看| 国产精品久久不能| 精品一区二区三区中文字幕在线| 粉嫩av免费一区二区三区| 亚洲精品合集| 伊人久久大香线蕉精品| 国产口爆吞精一区二区| 久久综合九色综合久久久精品综合 | 欧美唯美清纯偷拍| 国产男女裸体做爰爽爽| 最近2019好看的中文字幕免费| 国产精品视频久久久久久| 欧美一区二区久久| 香蕉视频黄色片| 中文字幕亚洲欧美日韩2019| 性网站在线观看| 欧美在线欧美在线| 色8久久久久| 国产精品一区二区不卡视频| 国产精品午夜一区二区三区| 欧美成人精品高清在线播放| 国产夫妻在线观看| 日韩精品在线免费| 超碰人人在线| 国产盗摄xxxx视频xxx69| 亚洲视频一起| 色乱码一区二区三在线看| 激情视频一区| 九九九九九国产| 26uuu亚洲综合色| 欧美日韩大片在线观看| 欧美午夜精品理论片a级按摩| 人妻少妇精品无码专区久久| 视频在线观看99| 在线日韩影院| 国产精品久久久久av福利动漫| 热久久天天拍国产| 国产资源在线视频| 国产福利一区二区| 最新黄色av网址| 日本韩国精品在线| 亚州av在线播放| 色综合久久悠悠| 亚瑟国产精品| 亚洲三区四区| 免费人成网站在线观看欧美高清| av网页在线观看| 亚洲成人黄色影院| 国产成人精品白浆久久69| 一区二区三欧美| 奇米777日韩| 美女一区视频| 亚洲免费综合| 老鸭窝一区二区| 五月综合激情婷婷六月色窝| 亚洲高清视频在线播放| 久久久精品久久| 成人综合日日夜夜| 中文字幕日韩一区二区三区| 麻豆精品一二三| 美国美女黄色片| 欧美日韩美女一区二区| 成人精品一区二区三区校园激情| 国产不卡一区二区在线播放| 亚洲品质自拍| 无遮挡又爽又刺激的视频| 久久日韩精品一区二区五区| 在线免费黄色av| 亚洲欧美一区二区三区久久| 台湾佬中文娱乐久久久| 欧美日韩一区二区视频在线| 久久久久久一区二区| 亚洲码无人客一区二区三区| 91国偷自产一区二区开放时间| 国产中文字幕在线观看| 国产精品久久久久久久久久| 日韩精品久久| 午夜国产福利在线观看| 一区二区三区在线视频免费 | 欧美一区二区三区四区五区| 暖暖日本在线观看| 亚洲综合国产精品| 亚洲无线视频| 精品夜夜澡人妻无码av| 色乱码一区二区三区88| 最新av网站在线观看| 92看片淫黄大片看国产片| 欧美三级黄美女| 亚洲国产精品成人综合久久久| 日韩欧美成人精品| 午夜免费福利在线观看| 亚洲a成v人在线观看| 在线免费高清一区二区三区| 亚洲成人网在线播放| 欧美午夜精品一区二区蜜桃| 亚洲卡一卡二| 久久精品中文字幕一区二区三区| 日本最新不卡在线| 欧美日韩在线观看免费| 亚洲国产精品久久久| 亚洲www啪成人一区二区| 久久久国产精华液999999| 成人免费精品视频| 波多野结衣不卡| 久精品免费视频| 欧美禁忌电影| 永久看看免费大片| 一本久久综合亚洲鲁鲁五月天| 在线看免费av| 国语精品免费视频| 麻豆国产一区二区| 欧美一级视频免费观看| 日韩中文娱乐网| 日本在线中文字幕一区| 午夜剧场高清版免费观看| 欧美日韩色婷婷| av免费在线观| 日本黄网免费一区二区精品| 国产ts人妖一区二区| 中文字幕在线观看精品| 亚洲性视频在线| 久久99热精品|