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

JavaScript有關的10個秘密和怪癖

開發 前端
在本片文章中,作者將向您講述JavaScript中最鮮為人知的秘密。

數據類型和定義

1. Null是個對象

JavaScript眾多類型中有個Null類型,它有個唯一的值null, 即它的字面量,定義為完全沒有任何意義的值。其表現得像個對象,如下檢測代碼:

  1. alert(typeof null); //彈出 'object' 

如下截圖:

 

 

盡管typeof值顯示是"object",但null并不認為是一個對象實例。要知道,JavaScript中的值都是對象實例,每個數值都是Number對象,每個對象都是Object對象。因為null是沒有值的,所以,很明顯,null不是任何東西的實例。因此,下面的值等于false。

  1. alert(null instanceof Object); //為 false 

譯者注:null還有被理解為對象占位符一說

2. NaN是個數值

NaN本意是表示某個值不是數值,但是其本身卻又是數值,且不等于其自身,很奇怪吧,看下面的代碼:

  1. alert(typeof NaN); //彈出 'Number'  
  2. alert(NaN === NaN); //為 false 

結果如下截圖:

 

 

實際上NaN不等于任何東西。要確認某玩意是不是NaN只能使用isNaN.

3. 無關鍵字的數組等同于false(關于Truthy和Falsy)

下面是JavaScript另一個***怪癖:

  1. alert(new Array() == false); //為 true 

結果如下截圖:

 

 

想要知道這里發生了什么,你需要理解truthy和falsy這個概念。它們是一種true/flase字面量。在JavaScript中,所有的非Boolean型值都會內置一個boolean標志,當這個值被要求有boolean行為的時候,這個內置布爾值就會出現,例如當你要跟Boolean型值比對的時候。

因為蘋果不能和梨做比較,所以當JavaScript兩個不同類型的值要求做比較的時候,它首先會將其弱化成相同的類型。false, undefined, null, 0, "", NaN都弱化成false。這種強制轉化并不是一直存在的,只有當作為表達式使用的時候。看下面這個簡單的例子:

  1. var someVar =0;  
  2. alert(someVar == false); //顯示 true 

結果如下截圖:

 

 

上面測試中,我們試圖將數值0和boolean值false做比較,因兩者的數據類型不兼容,JavaScript自動強制轉換成統一的等同的truthy和falsy,其中0等同于false(正如上面所提及的)。

你可能注意到了,上面一些等同false的值中并沒有空數組。只因空數組是個怪胚子:其本身實際上屬于truthy,但是當空數組與Boolean型做比較的時候,其行為表現又屬于falsy。不解?這是由原因的。先舉個例子驗證下空數組的奇怪脾氣:

  1. var someVar = []; //空數組  
  2. alert(someVar == false); //結果 true  
  3. if (someVar) alert('hello'); //alert語句執行, 所以someVar當作true 

結果如下截圖,連續彈出兩個框框:

 

 

譯者注:之所以會有這種差異,根據作者的說法,數組內置toString()方法,例如直接alert的時候,會以join(“,”)的形式彈出字符串,空數組自然就是空字符串,于是等同false。具體可參見作者另外一篇文章,《Twisted logic: understanding truthy & falsy》。不過我個人奇怪的是,像空對象,空函數,弱等于true或者false的時候都顯示false,為何?真的因為數組是個怪胎,需要特殊考慮嗎?

為避免強制轉換在比較方面的問題,你可以使用強等于(===)代替弱等于(==)。

  1. var someVar = 0;  
  2. alert(someVar == false); //結果 true – 0屬于falsy  
  3. alert(someVar === false); //結果 false – zero是個數值, 不是布爾值 

結果如下截圖(win7 FF4):

 

 

如果你想深入探究JavaScript中類型強制轉換等些特有的癖好,可以參見官方相關的文檔規范:section 11.9.3 of the ECMA-262

#p#

正則表達式

4. replace()可以接受回調函數

這是JavaScript最鮮為人知的秘密之一,v1.3中***引入。大部分情況下,replace()的使用類似下面:

  1. alert('10 13 21 48 52'.replace(/\d+/g, '*')); //用 * 替換所有的數字 

這是一個簡單的替換,一個字符串,一個星號。但是,如果我們希望在替換發生的時候有更多的控制,該怎么辦呢?我們只希望替換30以下的數值,該怎么辦呢?此時如果僅僅依靠正則表達式是鞭長莫及的。我們需要借助回調函數的東風對每個匹配進行處理。

  1. alert('10 13 21 48 52'.replace(/\d+/g, function(match) {  
  2. return parseInt(match) <30?'*' : match;  
  3. })); 

當每個匹配完成的時候,JavaScript應用回調函數,傳遞匹配內容給match參數。然后,根據回調函數里面的過濾規則,要么返回星號,要么返回匹配本身(無替換發生)。

如下截圖:

 

 

5. 正則表達式:不只是match和replace

不少javascript工程師都是只通過match和replace和正則表達式打交道。但JavaScript所定義的正則表達式相關方法遠不止這兩個。

其中值得一提的是test(),其工作方式類似match(),但是返回值卻不一樣:test()返回的是布爾型,用來驗證是否匹配,執行速度高于match()。

  1. alert(/\w{3,}/.test('Hello')); //彈出 'true' 

上面行代碼用來驗證字符串是否有三個以上普通字符,顯然"hello"是符合要求的,所以彈出true。

結果如下截圖:

 

 

我們還應注意RegExp對象,你可以用此創建動態正則表達式對象,例如:

  1. function findWord(word, string) {  
  2. var instancesOfWord = string.match(new RegExp('\\b'+word+'\\b''ig'));  
  3. alert(instancesOfWord);  
  4. }  
  5. findWord('car''Carl went to buy a car but had forgotten his credit card.'); 

這兒,我們基于參數word動態創建了匹配驗證。這段測試代碼作用是不區分大小選的情況下選擇car這個單詞。眼睛一掃而過,測試英文句子中只有一個單詞是car,因此這里的演出僅一個單詞。\b是用來表示單詞邊界的。

結果如下截圖:

 

 

函數和作用域

6. 你可以冒充作用域

作用域這玩意是用來決定什么變量是可用的,獨立的JavaScript(如JavaScript不是運行中函數中)在window對象的全局作用域下操作,window對象在任何情況下都可以訪問。然而函數中聲明的局部變量只能在該函數中使用。

  1. var animal ='dog';  
  2. function getAnimal(adjective) { alert(adjective+''+this.animal); }  
  3. getAnimal('lovely'); //彈出 'lovely dog' 

這兒我們的變量和函數都聲明在全局作用域中。因為this指向當前作用域,在這個例子中就是window。因此,該函數尋找window.animal,也就是'dog'了。到目前為止,一切正常。然而,實際上,我們可以讓函數運行在不同的作用域下,而忽視其本身的作用域。我們可以用一個內置的稱為call()的方法來實現作用域的冒充。

  1. var animal ='dog';  
  2. function getAnimal(adjective) { alert(adjective+''+this.animal); };  
  3. var myObj = {animal: 'camel'};  
  4. getAnimal.call(myObj, 'lovely'); //彈出 'lovely camel' 

call()方法中的***個參數可以冒充函數中的this,因此,這里的this.animal實際上就是myObj.animal,也就是'camel'了。后面的參數就作為普通參數傳給函數體。

另外一個與之相關的是apply()方法,其作用于call()一樣,不同之處在于,傳遞給函數的參數是以數組形式表示的,而不是獨立的變量們。所以,上面的測試代碼如果用apply()表示就是:

  1. getAnimal.apply(myObj, ['lovely']); //函數參數以數組形式發送 

demo頁面中,點擊***個按鈕的結果如下截圖:

 

 

點擊第二個和第三個按鈕的結果如下:

 

 

#p#

7. 函數可以執行其本身

下面這個是很OK的:

  1. (function() { alert('hello'); })(); //彈出 'hello' 

這里的解析足夠簡單:聲明一個函數,然后因為()解析立即執行它。你可能會奇怪為何要這么做(指直接屁股后面()調用),這看上去是有點自相矛盾的:函數包含的通常是我們想稍后執行的代碼,而不是當下解析即執行的,否則,我們就沒有必要把代碼放在函數中。

另外一個執行函數自身(self-executing functions (SEFs))的不錯使用是為在延遲代碼中使用綁定變量值,例如事件的回調(callback),超時執行(timeouts)和間隔執行(intervals)。如下例子:

  1. var someVar ='hello';  
  2. setTimeout(function() { alert(someVar); }, 1000);  
  3. var someVar ='goodbye'

Newbies在論壇里總問這里timeout的彈出為什么是goodbye而不是hello?答案就timeout中的回調函數直到其運行的時候才去賦值someVar變量的值。而那個時候,someVar已經被goodbye重寫了好長時間了。

SEFs提供了一個解決此問題的方法。不是像上面一樣含蓄地指定timeout回調,而是直接將someVar值以參數的形式傳進去。效果顯著,這意味著我們傳入并孤立了someVar值,保護其無論后面是地震海嘯還是女朋友發飆咆哮都不會改變。

  1. var someVar = 'hello';  
  2. setTimeout((function(someVar) {  
  3. returnfunction() { alert(someVar); }  
  4. })(someVar), 1000);  
  5. var someVar ='goodbye'

風水輪流轉,這次,這里的彈出就是hello了。這就是函數參數和外部變量的點差別了哈。

例如,***一個按鈕點擊后的彈出如下:

 

 

瀏覽器

8. FireFox以RGB格式讀與返回顏色而非Hex

直到現在我都沒有真正理解為何Mozilla會這樣子。為了有個清晰的認識,看下面這個例子:

  1. <!--  
  2. #somePara { color: #f90; }  
  3. --> 
  4. <p id="somePara">Hello, world!</p> 
  5. <script> 
  6. var ie = navigator.appVersion.indexOf('MSIE') !=-1;  
  7. var p = document.getElementById('somePara');  
  8. alert(ie ? p.currentStyle.color : getComputedStyle(p, null).color);  
  9. </script> 

 

 

大部分瀏覽器彈出的結果是ff9900,而FireFox的結果卻是rgb(255, 153, 0),RGB的形式。經常,處理顏色的時候,我們需要花費不少代碼將RGB顏色轉為Hex。

下面是上面代碼在不同瀏覽器下的結果:

 

 

其它雜七雜八

9. 0.1 + 0.2 !== 0.3

這個古怪的問題不只會出現在JavaScript中,這是計算機科學中一個普遍存在的問題,影響了很多的語言。標題等式輸出的結果是0.30000000000000004。

這是個被稱為機器精度的問題。當JavaScript嘗試執行(0.1 + 0.2)這行代碼的時候,會把值轉換成它們喜歡的二進制口味。這就是問題的起源,0.1實際上并不是0.1,而是其二進制形式。從本質上將,當你寫下這些值的時候,它們注定要失去精度。你可能只是希望得到個簡單的兩位小數,但你得到的(根據Chris Pine的注解)是二進制浮點計算。好比你想把一段應該翻譯成中文簡體,結果出來的卻是繁體,其中還是有差異是不一樣的。

一般處理與此相關的問題有兩個做法:

轉換成整數再計算,計算完畢再轉換成希望的小數內容

調整你的邏輯,設定允許范圍為不是指定結果。

例如,我們不應該下面這樣:

  1. var num1=0.1, num2=0.2, shouldEqual=0.3;  
  2. alert(num1 + num2 == shouldEqual); //false 

而可以試試這樣:

  1. alert(num1 + num2 > shouldEqual - 0.001&& num1 + num2 < shouldEqual +0.001); //true 

10. 未定義(undefined)可以被定義(defined)

我們以一個和風細雨的小古怪結束。聽起來可能有點奇怪,undefined并不是JavaScript中的保留字,盡管它有特殊的意義,并且是唯一的方法確定變量是否未定義。因此:

  1. var someVar;  
  2. alert(someVar == undefined); //顯示 true 

目前為止,一切看上去風平浪靜,正常無比,但劇情總是很狗血:

  1. undefined ="I'm not undefined!";  
  2. var someVar;  
  3. alert(someVar == undefined); //顯示 false! 

這就是為什么jQuery源碼中最外部的閉包函數要有個并沒有傳入的undefined參數,目的就是保護undefined不要被外部的些不良乘虛而入。

 

原文:http://www.zhangxinxu.com/wordpress/?p=1703

【編輯推薦】

  1. 微軟雄心勃勃,意欲將JavaScript打造成次世代贏家
  2. 10個令人驚奇的HTML5和JavaScript效果
  3. 8個令人驚嘆的JavaScript效果的網站
  4. 泄露你的JavaScript技術很爛的五個表現
  5. JavaScript初學者應注意的七個細節
責任編輯:陳貽新 來源: 鑫空間
相關推薦

2012-04-08 14:47:52

iPad

2012-03-23 14:38:31

JavaScript

2016-05-06 10:02:33

CSSJavaScript工具

2019-09-03 18:16:44

Android 10Google長甜品

2017-12-23 08:50:30

JavascripCSS數據

2017-07-27 15:05:18

前端JavaScript難點

2023-08-02 18:44:47

JavaScript命名web

2021-08-09 10:33:51

人工智能

2011-01-27 13:08:57

HTML5JavascriptWeb

2010-12-21 11:31:09

2021-04-21 13:56:32

人工智能機器學習

2017-12-05 11:25:09

2011-06-30 16:10:01

JavaScript

2021-03-15 08:13:19

JavaScript開發代碼

2019-01-21 08:46:51

2021-07-19 07:55:24

JavaScript技巧實踐

2019-12-05 12:11:37

DevOps開發應用程序

2020-08-07 16:18:38

JavaScriptC++Python

2022-03-10 09:11:33

JavaScrip開發JSON

2017-05-27 15:21:38

JavaScript機器學習示例
點贊
收藏

51CTO技術棧公眾號

操她视频在线观看| 91看片就是不一样| 少妇精品视频一区二区 | 国产91在线免费| 欧洲亚洲在线| 精久久久久久久久久久| 欧美激情在线观看| 欧美人妻一区二区三区| 亚洲精品国产九九九| 日本精品一区二区三区高清| 欧美性受xxxx黑人猛交88| 手机在线观看毛片| 久久国产免费看| 51精品在线观看| 搜索黄色一级片| 青青一区二区| 91精品国产色综合久久不卡蜜臀 | 久久精品一级片| 狠狠做六月爱婷婷综合aⅴ| 日韩欧美一区二区在线视频| av免费网站观看| 草草影院在线| 亚洲日本青草视频在线怡红院 | 爱情岛论坛亚洲自拍| 免费看av不卡| 亚洲一区二区3| 一区二区三区的久久的视频| 色视频精品视频在线观看| 国产一区亚洲一区| 国产精彩精品视频| 日本三级片在线观看| 亚洲a在线视频| 国产香蕉一区二区三区在线视频 | 国产一区二区网站| 久久久久久黄| 2019亚洲男人天堂| 日韩激情一区二区三区| 99精品在线观看| 国产一区二区三区18| 国产人妻人伦精品1国产丝袜| 欧美视频三区| 欧美久久久影院| 99视频在线视频| 亚洲播播91| 色综合久久久久久久久久久| 男女猛烈激情xx00免费视频| 欧美14一18处毛片| 亚洲精品成人精品456| a级黄色片网站| 国产原创视频在线观看| 亚洲欧美在线另类| 色香蕉在线观看| 黄色免费在线观看网站| 中文字幕视频一区二区三区久| 日韩影片在线播放| 成人精品一区二区三区校园激情| 久久免费电影网| 欧洲在线视频一区| 国产中文字幕在线看| 久久久夜色精品亚洲| 日本免费高清不卡| 国产三级视频在线看| 国产日韩影视精品| 一级特黄录像免费播放全99| 欧美日韩在线看片| 亚洲欧美视频一区| av动漫在线播放| xxx.xxx欧美| 欧美色图在线视频| 男人日女人下面视频| 亚洲欧美一区二区三区| 在线亚洲欧美专区二区| 另类小说色综合| 福利一区三区| 精品国产三级电影在线观看| 在线观看国产网站| 国产精品自拍区| 日韩性生活视频| 在线免费观看亚洲视频| 伊人精品在线| 国产成人精彩在线视频九色| 亚洲天堂avav| 成人在线综合网站| 蜜桃传媒视频第一区入口在线看| jzzjzzjzz亚洲成熟少妇| 日韩一区中文字幕| 欧美一级免费播放| 91福利精品在线观看| 91精品国产综合久久久久久久久久 | 国产精品精品软件男同| 欧美一区二区三区精美影视 | 日韩欧美国产网站| 日韩一级在线免费观看| 亚洲18在线| 精品久久免费看| 亚洲欧洲av一区二区| 国产一区福利视频| 内衣办公室在线| 国产精品拍天天在线| 国产亚洲精品久久久久久久| 日韩大尺度黄色| 日韩一区二区免费电影| 无码人妻精品一区二区三应用大全 | 午夜久久一区| 日韩暖暖在线视频| 精品国产区一区二| 国产人伦精品一区二区| 日本国产中文字幕| 高清在线一区| 精品亚洲国产视频| 国产精品老熟女一区二区| 亚洲在线国产日韩欧美| 97超碰人人模人人爽人人看| 北条麻妃在线| 欧美性生交大片免费| 亚洲成a人无码| 91视频一区| 国产精品久久久久高潮| 视频一区二区免费| 亚洲美女视频一区| 亚洲77777| 一本色道久久综合狠狠躁的番外| 色综合久久88| 亚洲中文字幕在线一区| 97se亚洲国产综合自在线观| 超碰超碰超碰超碰超碰| 激情久久一区二区| 亚洲免费影视第一页| 久久视频免费在线观看| 国产激情精品久久久第一区二区| 亚洲免费在线精品一区| 制服诱惑亚洲| 亚洲人成网站免费播放| 国产一级做a爱片久久毛片a| 成人午夜精品一区二区三区| 永久免费网站视频在线观看| 国产精品久久乐| 中文字幕精品久久久久| 国产偷人爽久久久久久老妇app| 26uuu国产在线精品一区二区| 久久综合久久久久| 亚洲精品黑牛一区二区三区| 欧美疯狂性受xxxxx另类| 国产熟女一区二区三区五月婷| 国产精品久久久久一区| 成人免费在线观看视频网站| 欧美偷拍综合| 国产美女91呻吟求| 视频免费一区| 欧美高清性hdvideosex| 国产wwwwxxxx| 国产一区二区0| 天堂а√在线中文在线| 亚洲开心激情| 欧美激情成人在线视频| 亚洲男女视频在线观看| 亚洲网友自拍偷拍| v天堂中文在线| 亚洲一区网站| 亚洲国产精品久久久久婷婷老年| 国产精品久久乐| 欧美成人sm免费视频| 精品人妻无码一区二区| 亚洲成av人片| 中文字幕丰满孑伦无码专区| 日韩激情一二三区| 麻豆中文字幕在线观看| 北条麻妃在线一区二区免费播放 | 久久精品国产亚洲av香蕉| 国产91精品一区二区| 18禁网站免费无遮挡无码中文| 日韩精品欧美大片| 国产成人精品久久久| 日韩在线中文字幕视频| 国产精品嫩草影院俄罗斯| 超碰成人在线免费观看| 亚洲精品少妇一区二区| 国产中文字幕二区| 一区二区成人网| 中文字幕在线观看日| 91传媒理伦片在线观看| 亚洲色成人网站www永久四虎| 国产色视频在线| 久久久影院官网| 青青青在线视频免费观看| 久久久精品久久久久久96| 动漫美女被爆操久久久| 三上悠亚亚洲一区| 久久亚洲私人国产精品va| 色婷婷在线视频| 欧美三级中文字| 日本三级中文字幕| 中文字幕不卡在线观看| 波多野结衣三级视频| 免费一区视频| 黄色一级片av| 国产日产精品_国产精品毛片| 成人两性免费视频| 少妇视频一区| 欧美成人精品在线观看| 国产三级电影在线观看| 精品日韩欧美一区二区| 亚洲天堂久久久久| 一本久久精品一区二区| 久久久久97国产| 国产精品欧美经典| 男女黄床上色视频| 国产盗摄精品一区二区三区在线| 欧美综合在线观看视频| 91久久久久| 中国一级大黄大黄大色毛片| 精品久久久久久久| 狠狠色综合网站久久久久久久| 深夜福利亚洲| 国产精品成人一区二区| 春色校园综合激情亚洲| 另类专区欧美制服同性| av在线第一页| 国产偷亚洲偷欧美偷精品| www.精品久久| 51精品视频一区二区三区| 亚洲av无码不卡| 午夜精品福利一区二区蜜股av| 国产免费美女视频| 国产精品久久久久影院老司| 日韩人妻一区二区三区| av中文字幕不卡| 精品国产免费久久久久久婷婷| 精品影视av免费| 男女污污的视频| 日韩精品乱码免费| 国产成人无码av在线播放dvd| 亚洲成人原创| 黄色一级视频在线播放| 激情久久婷婷| 欧美男女爱爱视频| 亚洲视频日本| 精品无码一区二区三区在线| 狠狠入ady亚洲精品| 免费看日b视频| 91精品一区二区三区综合| 青青草原国产免费| 亚洲综合小说| 国产成人一二三区| 欧美激情综合色综合啪啪| 真人做人试看60分钟免费| 中文字幕午夜精品一区二区三区| 国产奶头好大揉着好爽视频| 日韩成人影院| 制服诱惑一区| 欧美伊人影院| 久久香蕉视频网站| 亚洲高清久久| 岳毛多又紧做起爽| 丝袜诱惑亚洲看片| 色噜噜狠狠永久免费| 久久66热偷产精品| 无套白嫩进入乌克兰美女| 国产成a人亚洲精品| 国产真实乱人偷精品| 2023国产一二三区日本精品2022| 国产精品亚洲无码| 国产精品美女视频| 午夜免费激情视频| 亚洲一区在线看| 日韩av大片在线观看| 一本久久精品一区二区| 亚洲一区中文字幕在线| 日韩欧美国产午夜精品| 欧美 日韩 国产 精品| 亚洲国内精品视频| 成年在线观看免费人视频| 日韩视频亚洲视频| 黄视频在线免费看| 欧洲永久精品大片ww免费漫画| 日韩成人亚洲| 亚洲xxxx在线| 亚洲精品动态| 99久久久无码国产精品性色戒| 国产一区欧美| 国产精品99久久免费黑人人妻| 卡一卡二国产精品| 久久精品aⅴ无码中文字字幕重口| 91丝袜美腿高跟国产极品老师| 美国一级黄色录像| 亚洲综合在线五月| 亚洲第一网站在线观看| 91精品国产欧美一区二区| 姝姝窝人体www聚色窝| 中文日韩在线观看| 成人影音在线| 亚洲国产女人aaa毛片在线| 国产精品日韩二区| 年轻的保姆91精品| 欧美精品七区| 欧美一区二区三区另类| 日本一本二本在线观看| 狠狠色丁香婷婷综合| av2014天堂网| 日韩毛片在线免费观看| 精品国产一区二区三区四| 3d成人h动漫网站入口| 十九岁完整版在线观看好看云免费| 中文字幕国产日韩| 在线视频cao| 亚洲综合中文字幕在线| 久久不见久久见免费视频7| 成人午夜视频免费观看| 日韩不卡一二三区| 你懂的在线观看网站| 亚洲欧美视频在线观看| 中文字幕人妻一区二区在线视频 | 97精品人妻一区二区三区在线| 精品国免费一区二区三区| 日韩精品黄色| 国产精品www色诱视频| 噜噜噜狠狠夜夜躁精品仙踪林| 熟妇熟女乱妇乱女网站| 老司机精品视频网站| 亚洲天堂美女视频| 亚洲一区二区三区四区的| 中国女人真人一级毛片| 日韩乱码在线视频| 国产第一页在线| 亚洲一区二区三区视频| 97精品国产| 污视频网站观看| 欧美激情在线一区二区三区| 成人精品在线看| 亚洲国产精品免费| 电影k8一区二区三区久久| 91传媒视频免费| 亚洲精品成人无限看| 怡红院亚洲色图| 欧美激情一二三区| 国产精品免费无遮挡无码永久视频| 日韩精品久久久久| 亚洲啊v在线| 久久免费99精品久久久久久| 在线亚洲自拍| 成人精品在线观看视频| 欧美体内谢she精2性欧美| 日本人妻丰满熟妇久久久久久| 欧美风情在线观看| 国产精品乱战久久久| 日本精品久久久久久久久久| 成人网男人的天堂| 日韩成人一区二区三区| 亚洲国产精品资源| 手机在线理论片| 欧美一区2区三区4区公司二百| 日韩一区精品视频| 亚洲第一视频区| 欧美日韩一区精品| а√天堂8资源在线官网| 亚洲自拍小视频| 亚洲国产激情| 少妇按摩一区二区三区| 欧美亚一区二区| 欧美三级黄网| 国产精品10p综合二区| 欧美日本一区二区视频在线观看| 苍井空张开腿实干12次| 婷婷六月综合亚洲| 岛国在线视频免费看| 91久久综合亚洲鲁鲁五月天| 欧美人与禽猛交乱配视频| 中文字幕乱视频| 色天使色偷偷av一区二区| 91在线视频| 51午夜精品| 99热免费精品在线观看| 国产一二三四区在线| 3d成人动漫网站| 永久免费毛片在线播放| 亚洲激情一区二区| 国产传媒久久文化传媒| 91视频免费网址| 日日骚久久av| 精品视频高潮| 午夜久久久精品| 亚洲一级二级在线| 国产一级在线| 99久久伊人精品影院| 久久久久久黄| 激情综合五月网| 亚洲日韩欧美视频一区| 99精品在线免费观看| 国产免费观看高清视频| 国产精品卡一卡二| 天堂在线观看av| 成人性生交xxxxx网站| 亚洲一区黄色| 九九精品视频免费| 亚洲女同性videos| 日韩精品一级| 久久久国产欧美| 亚洲风情在线资源站| 色网站免费在线观看| 九色一区二区|