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

JavaScript入門之基本函數

開發 前端
函數,在C語言之類的過程式語言中,是頂級的實體,而在Java/C++之類的面向對象的語言中,則被對象包裝起來,一般稱為對象的方法。而在JavaScript中,函數本身與其他任何的內置對象在低位上是沒有任何區別的,也就是說,函數本身也是對象。

系列專題:JavaScript入門

總的來說,函數在JavaScript中可以:

◆ 被賦值給一個變量

◆ 被賦值為對象的屬性

◆ 作為參數被傳入別的函數

◆ 作為函數的結果被返回

◆ 用字面量來創建

函數對象

1.1 創建函數

創建JavaScript函數的一種不長用的方式(幾乎沒有人用)是通過new操作符來作用于Function“構造器”:

  1. <strong>var funcName = new Function( [argname1, [... argnameN,]] body );</strong> 

參數列表中可以有任意多的參數,然后緊跟著是函數體,比如:

  1. <strong>var add = new Function("x""y""return(x+y)");  
  2. print(add(2, 4));</strong> 

將會打印結果:

6

但是,誰會用如此難用的方式來創建一個函數呢?如果函數體比較復雜,那拼接這個String要花費很大的力氣,所以JavaScript提供了一種語法糖,即通過字面量來創建函數:

  1. <strong>function add(x, y){  
  2.     return x + y;  
  3. }</strong> 

或:

  1. <strong>var add = function(x, y){  
  2.     return x + y;  
  3. }</strong> 

事實上,這樣的語法糖更容易使傳統領域的程序員產生誤解,function關鍵字會調用Function來new一個對象,并將參數表和函數體準確的傳遞給Function的構造器。

通常來說,在全局作用域(作用域將在下一節詳細介紹)內聲明一個對象,只不過是對一個屬性賦值而已,比如上例中的add函數,事實上只是為全局對象添加了一個屬性,屬性名為add,而屬性的值是一個對象,即function(x, y){return x+y;},理解這一點很重要,這條語句在語法上跟:

  1. <strong>var str = "This is a string";</strong> 

并無二致。都是給全局對象動態的增加一個新的屬性,如此而已。

為了說明函數跟其他的對象一樣,都是作為一個獨立的對象而存在于JavaScript的運行系統,我們不妨看這樣一個例子:

  1. <strong>function p(){  
  2.     print("invoke p by ()");  
  3. }  
  4.    
  5. p.id = "func";  
  6. p.type = "function";  
  7.    
  8. print(p);  
  9. print(p.id+":"+p.type);  
  10. print(p());</strong> 

沒有錯,p雖然引用了一個匿名函數(對象),但是同時又可以擁有屬性,完全跟其他對象一樣,運行結果如下:

function (){
print("invoke p by ()");
}
func:function
invoke p by ()

1.2 函數的參數

在JavaScript中,函數的參數是比較有意思的,比如,你可以將任意多的參數傳遞給一個函數,即使這個函數聲明時并未制定形式參數,比如:

  1. <strong>function adPrint(str, len, option){  
  2.     var s = str || "default";  
  3.     var l = len || s.length;  
  4.     var o = option || "i";  
  5.      
  6.     s = s.substring(0, l);  
  7.     switch(o){  
  8.        case "u":  
  9.            s = s.toUpperCase();  
  10.            break;  
  11.        case "l":  
  12.            s = s.toLowerCase();  
  13.            break;  
  14.        default:  
  15.            break;  
  16.     }  
  17.      
  18.     print(s);  
  19. }  
  20.    
  21. adPrint("Hello, world");  
  22. adPrint("Hello, world", 5);  
  23. adPrint("Hello, world", 5, "l");//lower case  
  24. adPrint("Hello, world", 5, "u");//upper case</strong> 

函數adPrint在聲明時接受三個形式參數:要打印的串,要打印的長度,是否轉換為大小寫的標記。但是在調用的時候,我們可以按順序傳遞給adPrint一個參數,兩個參數,或者三個參數(甚至可以傳遞給它多于3個,沒有關系),運行結果如下:

Hello, world
Hello
hello
HELLO

事實上,JavaScript在處理函數的參數時,與其他編譯型的語言不一樣,解釋器傳遞給函數的是一個類似于數組的內部值,叫arguments,這個在函數對象生成的時候就被初始化了。比如我們傳遞給adPrint一個參數的情況下,其他兩個參數分別為undefined.這樣,我們可以才adPrint函數內部處理那些undefined參數,從而可以向外部公開:我們可以處理任意參數。

我們通過另一個例子來討論這個神奇的arguments:

  1. <strong>function sum(){  
  2.     var result = 0;  
  3.     for(var i = 0, len = arguments.length; i < len; i++){  
  4.        var current = arguments[i];  
  5.        if(isNaN(current)){  
  6.            throw new Error("not a number exception");  
  7.        }else{  
  8.            result += current;  
  9.        }  
  10.     }  
  11.      
  12.     return result;  
  13. }  
  14.    
  15. print(sum(10, 20, 30, 40, 50));  
  16. print(sum(4, 8, 15, 16, 23, 42));//《迷失》上那串神奇的數字  
  17. print(sum("new"));</strong> 

函數sum沒有顯式的形參,而我們又可以動態的傳遞給其任意多的參數,那么,如何在sum函數中如何引用這些參數呢?這里就需要用到arguments這個偽數組了,運行結果如下:

150
108
Error: not a number exception

函數作用域

作用域的概念在幾乎所有的主流語言中都有體現,在JavaScript中,則有其特殊性:JavaScript中的變量作用域為函數體內有效,而無塊作用域,我們在Java語言中,可以這樣定義for循環塊中的下標變量:

  1. public void method(){  
  2.     for(int i = 0; i < obj1.length; i++){  
  3.        //do something here;  
  4.     }  
  5.     //此時的i為未定義  
  6.     for(int i = 0; i < obj2.length; i++){  
  7.        //do something else;  
  8.     }    

而在JavaScript中:

  1. <strong>function func(){  
  2.     for(var i = 0; i < array.length; i++){  
  3.        //do something here.  
  4.     }  
  5.     //此時i仍然有值,及I == array.length  
  6.     print(i);//i == array.length;  
  7. }</strong> 

JavaScript的函數是在局部作用域內運行的,在局部作用域內運行的函數體可以訪問其外層的(可能是全局作用域)的變量和函數。JavaScript的作用域為詞法作用域,所謂詞法作用域是說,其作用域為在定義時(詞法分析時)就確定下來的,而并非在執行時確定,如下例:

  1. <strong>var str = "global";  
  2. function scopeTest(){  
  3.     print(str);  
  4.     var str = "local";  
  5.     print(str);  
  6. }  
  7.    
  8. scopeTest();</strong> 

運行結果是什么呢?初學者很可能得出這樣的答案:

global
local

而正確的結果應該是:

undefined
local

因為在函數scopeTest的定義中,預先訪問了未聲明的變量str,然后才對str變量進行初始化,所以***個print(str)會返回undifined錯誤。那為什么函數這個時候不去訪問外部的str變量呢?這是因為,在詞法分析結束后,構造作用域鏈的時候,會將函數內定義的var變量放入該鏈,因此str在整個函數scopeTest內都是可見的(從函數體的***行到***一行),由于str變量本身是未定義的,程序順序執行,到***行就會返回未定義,第二行為str賦值,所以第三行的print(str)將返回”local”。

#p#

函數上下文

在Java或者C/C++等語言中,方法(函數)只能依附于對象而存在,不是獨立的。而在JavaScript中,函數也是一種對象,并非其他任何對象的一部分,理解這一點尤為重要,特別是對理解函數式的JavaScript非常有用,在函數式編程語言中,函數被認為是一等的。

函數的上下文是可以變化的,因此,函數內的this也是可以變化的,函數可以作為一個對象的方法,也可以同時作為另一個對象的方法,總之,函數本身是獨立的。可以通過Function對象上的call或者apply函數來修改函數的上下文:

call和apply

call和apply通常用來修改函數的上下文,函數中的this指針將被替換為call或者apply的***個參數,我們不妨來看看JavaScript入門之對象與JSON中的例子:

  1. //定義一個人,名字為jack  
  2. var jack = {  
  3.     name : "jack",  
  4.     age : 26  
  5. }  
  6.    
  7. //定義另一個人,名字為abruzzi  
  8. var abruzzi = {  
  9.     name : "abruzzi",  
  10.     age : 26  
  11. }  
  12.    
  13. //定義一個全局的函數對象  
  14. function printName(){  
  15.     return this.name;  
  16. }  
  17.    
  18. //設置printName的上下文為jack, 此時的this為jack  
  19. print(printName.call(jack));  
  20. //設置printName的上下文為abruzzi,此時的this為abruzzi  
  21. print(printName.call(abruzzi));  
  22.    
  23. print(printName.apply(jack));  
  24. print(printName.apply(abruzzi)); 

只有一個參數的時候call和apply的使用方式是一樣的,如果有多個參數:

  1. setName.apply(jack, ["Jack Sept."]);  
  2. print(printName.apply(jack));  
  3.    
  4. setName.call(abruzzi, "John Abruzzi");  
  5. print(printName.call(abruzzi)); 

得到的結果為:

  1. Jack Sept.  
  2. John Abruzzi 

apply的第二個參數為一個函數需要的參數組成的一個數組,而call則需要跟若干個參數,參數之間以逗號(,)隔開即可。

使用函數

前面已經提到,在JavaScript中,函數可以

◆ 被賦值給一個變量

◆ 被賦值為對象的屬性

◆ 作為參數被傳入別的函數

◆ 作為函數的結果被返回

我們就分別來看看這些場景:

賦值給一個變量:

  1. //聲明一個函數,接受兩個參數,返回其和  
  2. function add(x, y){  
  3.     return x + y;  
  4. }  
  5.    
  6. var a = 0;  
  7. a = add;//將函數賦值給一個變量  
  8. var b = a(2, 3);//調用這個新的函數a  
  9. print(b); 

這段代碼會打印”5”,因為賦值之后,變量a引用函數add,也就是說,a的值是一個函數對象(一個可執行代碼塊),因此可以使用a(2, 3)這樣的語句來進行求和操作。

賦值為對象的屬性:

  1. <strong>var obj = {  
  2.     id : "obj1" 
  3. }  
  4.    
  5. obj.func = add;//賦值為obj對象的屬性  
  6. obj.func(2, 3);//返回5</strong> 

事實上,這個例子與上個例子的本質上是一樣的,***個例子中的a變量,事實上是全局對象(如果在客戶端環境中,表示為window對象)的一個屬性。而第二個例子則為obj對象,由于我們很少直接的引用全局對象,就分開來描述。

作為參數傳遞:

  1. //高級打印函數的第二個版本  
  2. function adPrint2(str, handler){  
  3.     print(handler(str));  
  4. }  
  5.    
  6. //將字符串轉換為大寫形式,并返回  
  7. function up(str){  
  8.     return str.toUpperCase();  
  9. }  
  10.    
  11. //將字符串轉換為小寫形式,并返回  
  12. function low(str){  
  13.     return str.toLowerCase();  
  14. }  
  15.    
  16. adPrint2("Hello, world", up);  
  17. adPrint2("Hello, world", low); 

運行此片段,可以得到這樣的結果:

HELLO, WORLD
hello, world

應該注意到,函數adPrint2的第二個參數,事實上是一個函數,將這個處理函數作為參數傳入,在adPrint2的內部,仍然可以調用這個函數,這個特點在很多地方都是有用的,特別是,當我們想要處理一些對象,但是又不確定以何種形式來處理,則完全可以將“處理方式”作為一個抽象的粒度來進行包裝(即函數)。

作為函數的返回值:

先來看一個最簡單的例子:

  1. <strong>function currying(){  
  2.     return function(){  
  3.        print("curring");  
  4.     }  
  5. }</strong> 

函數currying返回一個匿名函數,這個匿名函數會打印”curring”,簡單的調用currying()會得到下面的結果:

  1. <strong>function (){  
  2.     print("curring");  
  3. }</strong> 

如果要調用currying返回的這個匿名函數,需要這樣:

  1. currying()(); 

***個括號操作,表示調用currying本身,此時返回值為函數,第二個括號操作符調用這個返回值,則會得到這樣的結果:

currying

原文:http://abruzzi.iteye.com/blog/646798

【系列文章】

JavaScript入門之對象與JSON

JavaScript概述

JavaScript內核之基本概念

責任編輯:陳貽新 來源: abruzzi的博客
相關推薦

2011-08-10 17:04:43

JavaScript

2011-07-19 13:44:39

JavaScript

2016-10-13 19:11:27

JavaScript函數Web

2011-07-20 10:27:29

JavaScript

2010-06-07 19:48:30

UML

2017-02-20 23:05:14

JavaScript

2016-10-28 21:13:33

JavaScript基本包裝類型

2011-08-24 13:56:27

JavaScript

2017-02-28 16:03:46

支付清結算交易

2011-09-29 09:50:44

JavaScript

2010-07-26 11:09:35

Perl函數手冊

2019-09-18 18:56:34

JavascriptOOP前端

2018-11-29 08:00:20

JavaScript異步Promise

2025-07-04 08:05:34

2017-04-12 11:47:32

2009-08-18 10:34:31

Java入門基本概念

2009-07-31 14:26:38

JavaScript函C#函數

2011-09-09 19:23:52

Widget

2020-12-07 08:01:59

JavaScript入門技巧

2011-09-08 14:50:51

JavascriptWidget
點贊
收藏

51CTO技術棧公眾號

超在线视频97| 欧美成人r级一区二区三区| 久久伊人一区二区| 中文字幕日韩国产| 亚洲精品久久久| 亚洲成人av资源网| 黄色三级视频在线| 国精一区二区三区| 国产性天天综合网| 99在线看视频| 中文字幕 国产精品| 欧美精品国产| 亚洲男子天堂网| 亚洲成人手机在线观看| 在线成人av观看| 亚洲欧美经典视频| 视频在线精品一区| 亚洲欧美日韩精品永久在线| 久久精品国产免费看久久精品| 久久久久久久久久久免费| 日本爱爱爱视频| 日韩aaa久久蜜桃av| 91精品国产一区二区人妖| 国产精品无码一本二本三本色| 日本在线视频中文有码| 欧美国产日韩a欧美在线观看 | 亚洲欧洲美洲在线综合| 三上悠亚 电影| 欧美97人人模人人爽人人喊视频| 欧美视频中文在线看| 毛片在线视频观看| 欧美性videos| 国产精品素人视频| 日韩欧美在线一区二区| 日韩午夜影院| 波多野结衣在线一区| 亚洲xxx大片| 国产内射老熟女aaaa∵| 喷白浆一区二区| 日韩av日韩在线观看| 日韩精品在线免费视频| 亚洲日本视频| 久久久久久久久久久国产| 久久艹精品视频| 欧美福利网址| 欧美成人第一页| 中文字幕五月天| 性欧美欧美巨大69| 久久久精品日本| 粉嫩av性色av蜜臀av网站| 91一区二区| y97精品国产97久久久久久| 午夜精品久久久久99蜜桃最新版 | 成人免费视频播放| 超碰97在线资源| 理论片中文字幕| 高清在线成人网| 国产伦精品一区二区三区高清版 | 国产一区二区三区在线看| 一色道久久88加勒比一| 欧美猛男同性videos| 亚洲精品综合精品自拍| 99久久人妻无码精品系列| 精品国产乱码久久久久久1区2匹| 亚洲性生活视频在线观看| av手机在线播放| 9999国产精品| 欧美日本高清视频| 91精品国产乱码久久久张津瑜| 国产亚洲亚洲| 国产大片精品免费永久看nba| 在线观看亚洲黄色| 久久精品国产亚洲高清剧情介绍 | 国产99久一区二区三区a片 | 亚洲欧美卡通另类91av| 日韩av免费在线播放| 中文文字幕一区二区三三| 国产一区视频在线看| 国产精品一区二| 可以在线观看的av网站| 自拍偷拍国产亚洲| 日本欧美黄色片| 巨胸喷奶水www久久久免费动漫| 欧美日韩国产区一| 精品久久久久一区二区| 深爱激情久久| 久久天天躁狠狠躁夜夜av| 精品亚洲永久免费| 日本在线观看不卡视频| 亚洲综合色av| 国产主播福利在线| 亚洲精品国产a| 看欧美ab黄色大片视频免费| 精品国产乱码一区二区三区| 亚洲精品99久久久久| 中文字幕有码在线播放| 欧美在线亚洲综合一区| 热99精品里视频精品| 国产免费久久久| 国产日韩亚洲欧美综合| 国产一二三四区在线观看| 成人美女视频| 欧美大片免费久久精品三p| 国产三级av在线播放| 欧美日韩亚洲三区| 国产精品日韩精品| 蜜臀久久精品久久久久| 国产精品剧情在线亚洲| av免费观看网| 日韩视频一二区| 三级精品视频久久久久| 日韩三级视频在线| 国产精品自在欧美一区| 日韩一本精品| 麻豆免费在线| 精品国产一区a| 国产精品视频在| 美女精品网站| 国产欧美日韩视频一区二区三区| 欧美r级在线| 疯狂蹂躏欧美一区二区精品| 亚洲女人在线观看| 97久久视频| 国产精品视频一区二区三区四| 色噜噜在线播放| 亚洲黄一区二区三区| 国产精品久久a| 影视先锋久久| 5566日本婷婷色中文字幕97| 性欧美18一19性猛交| 国产精品美女久久久久aⅴ国产馆| 精品国产免费av| 久久超级碰碰| 久久免费观看视频| 国产黄色片av| 亚洲女厕所小便bbb| 中文字幕久久av| 91亚洲国产成人久久精品| 国产精品免费小视频| 电影av在线| 欧洲亚洲精品在线| 天天操天天干天天操天天干| 久久一区精品| 日韩精品一区二区三区外面| 中文字幕av一区二区三区佐山爱| 亚洲美女福利视频网站| av黄色在线播放| 久久一留热品黄| 成人小视频在线看| 国产探花一区二区| 国产精品久久久久久久久久东京| 粉嫩一区二区三区国产精品| 欧美日韩在线三区| 亚洲一区电影在线观看| 国产一区二区三区在线观看免费 | 欧美精品v日韩精品v国产精品| 岛国av在线网站| 精品无人国产偷自产在线| 国产99久久久| 欧美国产精品专区| 日韩av.com| 欧美特黄一级| 久久精品aaaaaa毛片| 成人爱爱网址| 日韩亚洲综合在线| 精品国产九九九| 亚洲第一精品在线| theav精尽人亡av| 日韩二区在线观看| 日本xxxxx18| 欧美黄色影院| 国产精品极品美女在线观看免费 | 久久婷婷中文字幕| 黄色精品一区| 日本亚洲自拍| 精品国产亚洲一区二区三区在线| 欧美国产日韩一区二区在线观看| 四虎精品成人影院观看地址| 欧美三级欧美一级| 国产精品久久久久久久精| 成人午夜视频在线| 又色又爽又高潮免费视频国产| 国产精品99久久| 国产中文一区二区| 人人精品久久| 97超碰国产精品女人人人爽| 97在线观看免费观看高清| 日韩欧美一二三| 一级片免费在线播放| 亚洲丝袜自拍清纯另类| free性中国hd国语露脸| 精品一二三四区| 国产 福利 在线| 亚洲成av人电影| 久久一区二区三区欧美亚洲| 国产色99精品9i| 日本一区二区三区在线播放| 天天干在线视频论坛| 亚洲人成网站999久久久综合| 99久久国产热无码精品免费| 色欧美日韩亚洲| 久久久久久久福利| 国产精品污网站| 网站免费在线观看| 国产伦精品一区二区三区免费迷 | 欧美日韩尤物久久| 91精品国产成人www| a级片国产精品自在拍在线播放| 亚洲色图狂野欧美| 色屁屁草草影院ccyycom| 777色狠狠一区二区三区| 一级黄色av片| 精品欧美激情精品一区| 波多野结衣亚洲色图| 国产精品女上位| 在线不卡av电影| 99国内精品久久| 9191在线视频| 国产又黄又大久久| 黄色一级片免费的| 视频一区国产视频| 国产男女无遮挡| 亚洲麻豆av| 国产91沈先生在线播放| 天堂网在线观看国产精品| 手机在线观看国产精品| 中文字幕伦av一区二区邻居| 国产免费一区二区三区| 日韩一区二区三区高清在线观看| 成人激情黄色网| 欧美日韩破处视频| 国产精品亚洲欧美导航| 国产麻豆久久| 国产精品白嫩初高中害羞小美女| 亚洲欧洲自拍| 日韩av观看网址| 激情开心成人网| 国产精品99久久久久久久久久久久| 国产精品论坛| 欧美一性一乱一交一视频| www在线看| 午夜精品三级视频福利| 97天天综合网| 97视频网站入口| 中文不卡1区2区3区| 51ⅴ精品国产91久久久久久| 忘忧草在线日韩www影院| 91av在线看| 欧美专区福利免费| 国产精品91在线| 另类一区二区| 亚洲精品免费在线视频| 精品视频在线观看免费观看| 亚洲最大的av网站| 一级毛片精品毛片| 国产精品久久亚洲7777| 精品少妇一区| 欧美乱偷一区二区三区在线| 视频一区中文| 一区二区在线观看网站| 天天久久综合| 久久久国内精品| 亚洲免费成人| 国产极品美女高潮无套久久久| 日韩avvvv在线播放| 久久久精品高清| 高清不卡一区二区| 国产美女喷水视频| 国产精品久久毛片av大全日韩| 岛国毛片在线观看| 精品成人av一区| 中国a一片一级一片| 9191精品国产综合久久久久久| 成人av手机在线| 日韩国产精品一区| 五月婷婷在线观看| 欧美激情aaaa| 电影天堂国产精品| 91中文在线视频| 久久中文字幕导航| 亚洲欧洲精品在线 | 色综合视频在线| 一道本无吗dⅴd在线播放一区| 黄色网页在线播放| 国内精品久久久久影院 日本资源| 91精品韩国| 99理论电影网| 国产日产精品_国产精品毛片| 亚洲欧美日韩不卡| 亚洲在线视频| 中文字幕一区二区在线观看视频| 91小视频在线| 少妇人妻丰满做爰xxx| 岛国av一区二区三区| 国产一区二区三区四区视频 | 欧美在线一级片| 国产精品夫妻自拍| 久久久久久久久久久影院| 这里只有精品视频在线观看| 无码精品一区二区三区在线 | 欧美成人精品欧美一级| 色婷婷久久综合| 人妻偷人精品一区二区三区| 日韩中文在线不卡| 亚洲人成在线网站| 91精品国产高清久久久久久91裸体| 九九精品在线| www.国产在线视频| 精彩视频一区二区| 久久丫精品忘忧草西安产品| 亚洲一区在线观看免费| 伊人免费在线观看高清版| 亚洲精品一区av在线播放| 青青青国内视频在线观看软件| 国产精品影院在线观看| 精品中文一区| 男人天堂1024| a级高清视频欧美日韩| 久久久久亚洲AV成人| 欧美日韩国产经典色站一区二区三区| 亚洲欧美日韩综合在线| 久久噜噜噜精品国产亚洲综合| 国产一区一区| 中文字幕一区二区三区最新| 青青草国产精品97视觉盛宴| 国产精品无码一区二区三区| 天天亚洲美女在线视频| 亚洲国产精品国自产拍久久| 美女av一区二区三区 | 黄色漫画在线免费看| 91成人理论电影| 无码一区二区三区视频| 五月天av在线播放| 中文天堂在线一区| 日韩xxx视频| 一本大道久久加勒比香蕉| 午夜欧美巨大性欧美巨大| 区一区二区三区中文字幕| 久久成人国产| 极品人妻videosss人妻| 欧美午夜电影网| 69av在线| 亚洲精品欧美日韩| 综合一区av| 无码人妻一区二区三区免费n鬼沢 久久久无码人妻精品无码 | 第一福利永久视频精品| 天堂网www中文在线| 欧美在线视频观看| 神马电影久久| 15—17女人毛片| 1024亚洲合集| 亚洲av无码乱码国产精品| 欧美国产日韩xxxxx| 成人动态视频| 日本a级片免费观看| 国产欧美一区二区在线| 国产孕妇孕交大片孕| 美女扒开尿口让男人操亚洲视频网站| 视频二区欧美毛片免费观看| av在线观看地址| 久久综合久色欧美综合狠狠| 亚洲中文无码av在线| 久久精品国产v日韩v亚洲| 麻豆视频久久| 日日摸日日碰夜夜爽无码| 久久久.com| 国产欧美综合视频| 97在线视频精品| 精品国产乱码久久久久久果冻传媒 | 污视频在线免费观看一区二区三区| 日本sm残虐另类| www.超碰在线观看| 亚洲精品99999| 成人久久网站| 国产精品国三级国产av| 久久久不卡影院| 97久久人国产精品婷婷| 午夜精品一区二区三区在线| 国产麻豆一区二区三区精品视频| 污污的视频免费观看| 亚洲一区在线观看视频| 国产精品四虎| 成人动漫在线视频| 久久久久久自在自线| 成人免费精品动漫网站| 日韩电影中文字幕| 亚洲成人1区| 国模无码视频一区二区三区| 国产精品久久久久久妇女6080 | 亚洲欧美三级伦理| 国产精品igao视频网网址不卡日韩| 欧美日韩精品在线一区二区| 国产精品久久久久久久久免费丝袜 | 亚洲精品第一页| 91九色成人| 男人透女人免费视频| 亚洲一二三区在线观看| 在线观看麻豆| 欧美精品亚洲| 国产91综合网|