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

一文帶你解讀JavaScript中的變量、作用域和內(nèi)存問題

開發(fā) 前端
基本數(shù)據(jù)類型:undefined;null;number;boolean;string;按照值訪問的,可以操作保存在變量中的實際的值;引用數(shù)據(jù)類型:例如Array;不能直接訪問值,它是保存在內(nèi)存中的對象。

[[431723]]

一、基本類型和引用類型的值

  • 基本類型值:簡單的數(shù)據(jù)段;
  • 引用類型值:多個值構(gòu)成的對象;

回顧:

基本數(shù)據(jù)類型:undefined;null;number;boolean;string;按照值訪問的,可以操作保存在變量中的實際的值;

引用數(shù)據(jù)類型:例如Array;不能直接訪問值,它是保存在內(nèi)存中的對象;

JavaScript不允許直接訪問內(nèi)存中的位置;即不能直接操作對象的內(nèi)存空間;

我們在操作對象時,其實是操作對象的引用,而不是對象;

注意:如果我們復(fù)制保存著某個對象的變量時,那么兩個變量就會指向同一個對象,當(dāng)我們?yōu)閷ο筇砑訉傩詴r,操作的就是實際的對象;

1.1 動態(tài)的屬性

引用類型

  1. var person = new Object() // 創(chuàng)建一個對象 
  2. person.name = '張三' // 設(shè)置對象屬性 
  3. console.log(person.name) // 輸出對象屬性 

這個屬性會一直伴隨著對象,除非對象銷毀,否則該屬性會一直存在;

基本類型

  1. var name = 'Nick' 
  2. name.age = 20 
  3. console.log(name.age) // undefined 

只有引用值可以動態(tài)添加后面可以使用的屬性;

1.2 復(fù)制變量值

基本類型

  1. var s = 'hello' 
  2. var s1 = s 
  3. console.log(s1) // 'hello' 
  4. console.log(s1 == s) // true 

解釋:

再新創(chuàng)建一個變量s1,它的值和s一樣,都是字符型'hello',所以s1 == s;兩者完全獨立,互不干擾;

引用類型

  1. var obj1 = new Object() 
  2. var obj2 = obj1 
  3. obj1.name = 'nick' 
  4. console.log(obj2.name
  5. console.log(obj2 == obj1) 

圖示:

 

我們的變量名obj1儲存的是一個對象的引用,它指向堆里面的一個對象(object),通過復(fù)制,我們只是復(fù)制了一個變量obj2,它的指向和obj1一樣都是指向object,所以設(shè)置完obj1.name = 'nick',之后修改的是指向的對象的屬性,由于obj2也是指向這個對象,所以obj2.name = 'nick';

1.3 傳遞參數(shù)

函數(shù)的傳參類似于我們變量的復(fù)制,我們來查看一下;

1.3.1 基本類型的傳參

  1. function addnum(num){ 
  2.     num += 10 
  3.     return num 
  4. var count = 20 
  5. res = addnum(count
  6. console.log(count) // 20 
  7. console.log(res) // 30 

解釋:參數(shù)作為函數(shù)的局部變量,其實并不會對全局變量造成影響,所以count還是20;

1.3.2 引用類型的傳參

  1. function test(obj){ 
  2.      obj.age = 20 
  3. var obj1 = new Object() 
  4. test(obj1) 
  5. console.log(obj1.age) // 20 

解釋:此處obj和obj1引用的是同一個對象;那么問題來了,針對于引用類型,參數(shù)的傳遞是按照值還是按照引用呢?看下面的例子:

  1. function test(obj){ 
  2.      obj.age = 20 
  3.      obj = new Object() 
  4.      obj.age = 21 
  5. var obj1 = new Object() 
  6. test(obj1) 
  7. console.log(obj1.age) // 20 

這里如果是按照引用傳遞,obj1的指向應(yīng)該變成函數(shù)內(nèi)部創(chuàng)建的對象,并且其age值為21,但是實際輸出為20,說明即使在函數(shù)內(nèi)部修改了參數(shù)的值,其原始引用仍未改變;

函數(shù)內(nèi)部創(chuàng)建的obj會隨著函數(shù)調(diào)用結(jié)束而被銷毀;

二、作用域

2.1 執(zhí)行環(huán)境和作用域

執(zhí)行環(huán)境: 定義了變量或函數(shù)有權(quán)訪問的其它數(shù)據(jù),決定了它們的行為。

全局執(zhí)行環(huán)境是最外層的執(zhí)行環(huán)境。根據(jù) ECMAScript實現(xiàn)的宿主環(huán)境,表示全局執(zhí)行環(huán)境的對象可能不一樣。在瀏覽器中,全局執(zhí)行環(huán)境就是我們常說的 window 對象。

執(zhí)行環(huán)境中的代碼在執(zhí)行的時候,會創(chuàng)建變量對象的一個作用域鏈(scope chain)。這個作用域鏈決定了各級上下文中的代碼在訪問變量和函數(shù)時的順序。

代碼正在執(zhí)行的執(zhí)行環(huán)境的變量對象始終位于作用域鏈的最前端。如果上下文是函數(shù),則其活動對象(activation object)用作變量對象。活動對象最初只有一個定義變量:arguments 。(全局執(zhí)行環(huán)境中沒有這個變量。)

作用域鏈中的下一個變量對象來自包含執(zhí)行環(huán)境,再下一個對象來自再下一個包含執(zhí)行環(huán)境。以此類推直至全局執(zhí)行環(huán)境;全局執(zhí)行環(huán)境的變量對象始終是作用域鏈的最后一個變量對象。

代碼執(zhí)行時的標(biāo)識符解析是通過沿作用域鏈逐級搜索標(biāo)識符名稱完成的。搜索過程始終從作用域鏈的最前端開始,然后逐級往后,直到找到標(biāo)識符。(如果沒有找到標(biāo)識符,那么通常會報錯。)

  1. var color = "blue"
  2. function changeColor() { 
  3.     let anotherColor = "red"
  4.     function swapColors() { 
  5.         let tempColor = anotherColor; 
  6.         anotherColor = color; 
  7.         color = tempColor; 
  8.         // 這里可以訪問 color、anotherColor 和 tempColor 
  9.     swapColors();// 這里可以訪問 color 和 anotherColor,但訪問不到 tempColor 
  10.  
  11. changeColor();// 這里只能訪問 color 

以上代碼涉及 3 個執(zhí)行環(huán)境:全局執(zhí)行環(huán)境、 changeColor() 的局部執(zhí)行環(huán)境和 swapColors() 的局部執(zhí)行環(huán)境。全局執(zhí)行環(huán)境中有一個變量 color 和一個函數(shù) changeColor() 。changeColor() 的局部執(zhí)行環(huán)境中有一個變量 anotherColor 和一個函數(shù) swapColors() ,但在這里可以訪問全局上下文中的變量 color 。其它函數(shù)同理;

2.2 延長作用域鏈

雖然執(zhí)行環(huán)境主要有全局環(huán)境和局部環(huán)境兩種,但有其他方式來延長作用域鏈。某些語句會導(dǎo)致在作用域鏈前端臨時添加一個變量對象,這個對象在代碼執(zhí)行后會被刪除。通常在兩種情況下會出現(xiàn)這個現(xiàn)象,即代碼執(zhí)行到下面任意一種情況時:

  • try / catch 語句的 catch 塊;
  • with 語句;

這兩種情況下,都會在作用域鏈前端添加一個變量對象。對 with 語句來說,會向作用域鏈前端添加指定的對象;對 catch 語句而言,則會創(chuàng)建一個新的變量對象,這個變量對象會包含要拋出的錯誤對象的聲明。如下所示:

  1. function buildUrl() { 
  2.     let qs = "?debug=true"
  3.     with(location){ 
  4.         let url = href + qs; 
  5.     return url; 

這里, with 語句接收 location 對象,因此 location 會被添加到作用域鏈前端。buildUrl() 函數(shù)中定義了一個變量 qs 。當(dāng) with 語句中的代碼引用變量 href 時,實際上引用的是location.href ,也就是自己變量對象的屬性。在引用 qs 時,引用的則是定義在buildUrl() 中的那個變量,它位于函數(shù)環(huán)境的變量對象中;至于with語句內(nèi)部,則定義了一個url的變量,因而url變成函數(shù)執(zhí)行環(huán)境的一部分,可以作為函數(shù)的值被返回;

2.3 沒有塊級作用域

  1. if(true){ 
  2.     var color = 'red' 
  3. console.log(color) // red 

這里我們很疑惑,這個color在{}中,不應(yīng)該是局部變量嗎?為什么在全局中也能夠輸出;

解釋:在這里if語句聲明的變量將會添加到當(dāng)前的執(zhí)行環(huán)境(即全局環(huán)境),使用for語句也是一樣;

  1. for(var i = 0;i < 5;i++){ 
  2.    console.log('i'
  3. console.log(i) // 5 

聲明變量

使用var聲明的變量會被自動添加到最接近的環(huán)境中,在函數(shù)內(nèi)部聲明,最接近的環(huán)境就是函數(shù)的局部環(huán)境;在with語句中,最接近的環(huán)境就是函數(shù)環(huán)境;如果沒有使用var聲明變量,那么就會自動添加到全局環(huán)境中;

  1. function test(a,b){ 
  2.     var sum = a + b 
  3.     return sum 
  4. console.log(test(10,20)) // 30 
  5. console.log(sum) // ReferenceError: sum is not defined 

這里原因就不做過多解釋了,但是如果我們在該函數(shù)內(nèi)部省略var,直接聲明sum,那么在函數(shù)外部也是可以輸出sum的,因為此時他就是一個全局變量;

在JavaScript中,不聲明而直接初始化變量是一種錯誤做法;

三、垃圾回收

3.1 垃圾回收機制

JavaScript 是使用垃圾回收的語言,也就是說執(zhí)行環(huán)境負責(zé)在代碼執(zhí)行時管理內(nèi)存。JavaScript 通過自動內(nèi)存管理實現(xiàn)內(nèi)存分配和閑置資源回收。

基本過程:確定某個變量不會再使用,然后釋放它占用的內(nèi)存。

這個過程是周期性的,即垃圾回收程序每隔一定時間就會自動運行。垃圾回收過程是一個近似且不完美的方案,因為某塊內(nèi)存是否還有用,屬于“不可判定的”問題,意味著靠算法是解決不了的。

3.2 性能問題

垃圾回收程序會周期性運行,如果內(nèi)存中分配了很多變量,則可能造成性能損失,因此垃圾回收的時間調(diào)度很重要。尤其是在內(nèi)存有限的移動設(shè)備上,垃圾回收有可能會明顯拖慢渲染的速度和幀速率。

現(xiàn)代垃圾回收程序會基于對 JavaScript 運行時環(huán)境的探測來決定何時運行。探測機制因引擎而異,但基本上都是根據(jù)已分配對象的大小和數(shù)量來判斷的。

由于調(diào)度垃圾回收程序方面的問題會導(dǎo)致性能下降,它的策略是根據(jù)分配數(shù),比如分配了 256 個變量、4096 個對象/數(shù)組字面量和數(shù)組槽位(slot),或者 64KB 字符串。只要滿足其中某個條件,垃圾回收程序就會運行。

這樣實現(xiàn)的問題在于,分配那么多變量的腳本,很可能在其整個生命周期內(nèi)始終需要那么多變量,結(jié)果就會導(dǎo)致垃圾回收程序過于頻繁地運行。

由于對性能的嚴(yán)重影響,IE7最終更新了垃圾回收程序。IE7 發(fā)布后,JavaScript 引擎的垃圾回收程序被調(diào)優(yōu)為動態(tài)改變分配變量、字面量或數(shù)組槽位等會觸發(fā)垃圾回收的閾值。IE7 的起始閾值都與 IE6 的相同。如果垃圾回收程序回收的內(nèi)存不到已分配的 15%,這些變量、字面量或數(shù)組槽位的閾值就會翻倍。如果有一次回收的內(nèi)存達到已分配的 85%,則閾值重置為默認值。這么一個簡單的修改,極大地提升了重度依賴 JavaScript 的網(wǎng)頁在瀏覽器中的性能。

3.3 管理內(nèi)存

為什么需要管理內(nèi)存?

在使用垃圾回收的編程環(huán)境中,JavaScript 運行在一個內(nèi)存管理與垃圾回收都很特殊的環(huán)境。分配給瀏覽器的內(nèi)存通常比分配給桌面軟件的要少很多,分配給移動瀏覽器的就更少了。這更多出于安全考慮而不是別的,就是為了避免運行大量 JavaScript 的網(wǎng)頁耗盡系統(tǒng)內(nèi)存而導(dǎo)致操作系統(tǒng)崩潰。這個內(nèi)存限制不僅影響變量分配,也影響調(diào)用棧以及能夠同時在一個線程中執(zhí)行的語句數(shù)量。

接觸引用

將內(nèi)存占用量保持在一個較小的值可以讓頁面性能更好。優(yōu)化內(nèi)存占用的最佳手段就是保證在執(zhí)行代碼時只保存必要的數(shù)據(jù)。如果數(shù)據(jù)不再必要,那么把它設(shè)置為 null ,從而釋放其引用。

局部變量在超出作用域后會被自動解除引用,如下所示:

  1. function createPerson(name){ 
  2.     let localPerson = new Object(); 
  3.     localPerson.name = name
  4.     return localPerson; 
  5. let globalPerson = createPerson("Nicholas"); // 解除 globalPerson 對值的引用 
  6. globalPerson = null

在上面的代碼中,變量 globalPerson 保存著 createPerson() 函數(shù)調(diào)用返回的值。在 createPerson()內(nèi)部, localPerson 創(chuàng)建了一個對象并給它添加了一個 name 屬性。然后, localPerson 作為函數(shù)值被返回,并被賦值給 globalPerson 。localPerson 在 createPerson() 執(zhí)行完成超出執(zhí)行環(huán)境后會自動被解除引用,不需要顯式處理。但 globalPerson 是一個全局變量,應(yīng)該在不再需要時手動解除其引用,最后一行就是這么做的。不過要注意,解除對一個值的引用并不會自動導(dǎo)致相關(guān)內(nèi)存被回收。解除引用的關(guān)鍵在于確保相關(guān)的值已經(jīng)不在執(zhí)行環(huán)境里了,因此它在下次垃圾回收時會被回收。

 

責(zé)任編輯:姜華 來源: IT共享之家
相關(guān)推薦

2021-10-11 10:19:48

Javascript 高階函數(shù)前端

2021-10-14 10:25:05

JavaScript類型函數(shù)

2021-09-02 10:24:54

JavaScript前端語言

2021-09-09 10:26:26

Javascript 文檔對象前端

2022-04-08 09:01:14

CSS自定義屬性前端

2016-12-19 11:10:32

JavaScript變量作用域

2021-11-06 10:18:30

Python變量常量

2021-09-07 09:46:40

JavaScriptGenerator函數(shù)

2021-09-06 10:21:27

JavaScript表單對象 前端

2024-11-19 13:20:55

2023-03-31 08:16:53

Flutter優(yōu)化內(nèi)存管理

2019-08-06 09:00:00

JavaScript函數(shù)式編程前端

2011-04-18 09:31:35

JavaScript

2021-06-06 13:06:34

JVM內(nèi)存分布

2021-09-08 17:42:45

JVM內(nèi)存模型

2023-11-20 08:18:49

Netty服務(wù)器

2022-12-20 07:39:46

2023-12-21 17:11:21

Containerd管理工具命令行

2020-06-24 12:01:16

Python數(shù)據(jù)類字符

2024-12-23 14:46:24

點贊
收藏

51CTO技術(shù)棧公眾號

国产99精品国产| 在线看成人短视频| 一区二区三区精品在线观看| dy888夜精品国产专区| 日本三级欧美三级| 国产综合久久久| 制服丝袜在线91| 亚洲国产成人精品无码区99| 国产区视频在线| 黄色资源网久久资源365| 欧美激情综合色| 谁有免费的黄色网址| 久久免费福利| 日本精品一级二级| 六月婷婷激情网| 精品视频一二三| 丰满放荡岳乱妇91ww| 国产精品久久久久久av福利软件| h色网站在线观看| 小说区图片区色综合区| 91精品国产一区二区| 国产精品秘入口18禁麻豆免会员| 麻豆传媒免费在线观看| 91原创在线视频| 91免费国产网站| 国产成人一级片| 国产精品大片免费观看| 中文字幕日韩欧美在线视频| 亚洲AV无码国产精品| 欧美h版在线观看| 欧美在线观看视频一区二区三区| 国产情侣第一页| 日本中文字幕伦在线观看| 99精品国产91久久久久久| 99精品欧美一区二区三区| 中文字幕精品一区二区精| 在线欧美日韩| 久久国产视频网站| 久久久久久久久久97| 国产欧美高清视频在线| 亚洲精品动漫久久久久| 免费人成视频在线播放| 亚洲男人在线| 欧美视频一区二| 欧美日韩大尺度| 2022成人影院| 精品日韩中文字幕| 精品无码一区二区三区在线| 青青青国内视频在线观看软件| 国产精品国产三级国产aⅴ原创 | 97人妻人人澡人人爽人人精品 | 日韩av电影在线网| 国产亚洲欧美精品久久久久久| 我不卡影院28| 日韩一区二区在线视频| 日韩av片在线免费观看| 菠萝蜜一区二区| 国产亚洲一区精品| 成人黄色a级片| 日本一区二区高清不卡| 中文字幕亚洲无线码a| 国产在线免费av| 久久福利影院| 日韩在线中文视频| 久久久久久久久久97| 亚洲一级毛片| 欧美黑人一区二区三区| 国产污片在线观看| 亚洲免费黄色| 热99精品里视频精品| 无码人妻一区二区三区线| 欧美在线综合| 国产精品久久一区主播| 日本黄色一级视频| 久久综合综合久久综合| 亚洲已满18点击进入在线看片 | 亚欧视频在线观看| 亚洲神马久久| 国产精品福利在线观看网址| 在线视频你懂得| 国产91丝袜在线播放0| 国产精品三区在线| 日本成人一区| 国产精品大尺度| 日韩成人午夜影院| 国产盗摄——sm在线视频| 色综合久久久久综合| 91插插插插插插插插| 精品一区二区三区中文字幕 | 亚洲va在线va天堂| 久久无码高潮喷水| 精品176极品一区| 欧美变态tickling挠脚心| 中文文字幕文字幕高清| 精品国产一区二区三区久久久蜜臀 | 热门国产精品亚洲第一区在线| 亚洲av无码乱码国产精品fc2| 韩国理伦片一区二区三区在线播放| 91超碰rencao97精品| 午夜在线视频免费| 国产精品国产自产拍高清av| 美女日批免费视频| 欧美国产视频| 亚洲国内精品视频| 999精品视频在线观看播放| 国产日韩欧美在线播放不卡| 91精品国产自产在线观看永久| 女人18毛片一区二区三区| 久久精品人人做人人爽人人| 精品嫩模一区二区三区| 亚洲mmav| 亚洲二区中文字幕| 可以免费看av的网址| 国产亚洲成人一区| 99精品国产高清一区二区| 国产视频二区在线观看| 亚洲一区在线观看免费观看电影高清| 国产嫩草在线观看| 老司机精品在线| 欧美猛交ⅹxxx乱大交视频| 欧美超碰在线观看| aaa欧美色吧激情视频| 在线精品亚洲一区二区| 欧美二三四区| 日韩精品在线视频| 国产主播在线观看| 国产中文字幕精品| 色播五月综合| 香蕉视频亚洲一级| 日韩av网站导航| 欧美人妻精品一区二区三区| 久久国产精品99精品国产| 欧美一区免费视频| 美女网站在线看| 精品国产乱子伦一区| 国产高潮国产高潮久久久91| 九九**精品视频免费播放| 欧美一区二区三区四区在线观看地址| 草草在线观看| 欧美tk—视频vk| 欧美成人精品欧美一级私黄| 国产综合一区二区| 亚洲精品国产精品国自产观看 | 国产精品豆花视频| 91在线视频导航| 久操视频在线免费播放| 欧美日韩国产美女| 久久婷婷五月综合| 日韩vs国产vs欧美| 日韩欧美亚洲日产国产| 婷婷综合六月| 在线播放国产精品| 久久午夜鲁丝片| 国产亚洲欧美激情| 无码日韩人妻精品久久蜜桃| 欧美日韩在线播放视频| 国产精品久久久久久影视| 国产小视频在线播放| 91极品美女在线| 亚洲天堂精品一区| 老司机午夜精品| www.午夜色| 日本精品视频| 97精品视频在线播放| 五月天婷婷激情网| 色偷偷久久一区二区三区| 亚洲无人区码一码二码三码的含义 | 欧美三级午夜理伦三级在线观看| 97成人超碰免| 国产福利第一视频在线播放| 欧美日韩你懂的| 国产盗摄x88av| 成人动漫一区二区三区| 免费无码不卡视频在线观看| 一区二区三区四区在线看| 国产精品久久久久aaaa九色| av色综合久久天堂av色综合在| 欧美mv日韩mv| 久久久久在线视频| 国产精品久久国产精麻豆99网站| 涩多多在线观看| 亚洲电影av| 日本成人三级电影网站| 亚洲天堂网站| 91超碰caoporn97人人| 国产在线视频网站| 欧美一区二区三区免费在线看 | 亚洲激情网址| 欧美在线日韩精品| 国产麻豆一区二区三区| 97色在线观看| 男人资源在线播放| 亚洲高清不卡av| 曰批又黄又爽免费视频| 亚洲综合在线第一页| yy1111111| 国内一区二区在线| 国模吧无码一区二区三区| 国产精品久久观看| 狠狠色综合欧美激情| 成人精品高清在线视频| 久久免费视频在线| 91高清在线| 亚洲国产精品电影| 国产精品无码在线播放| 精品人伦一区二区三区蜜桃网站| 娇小11一12╳yⅹ╳毛片| www.日韩大片| 色噜噜狠狠一区二区三区狼国成人| 亚洲裸体俱乐部裸体舞表演av| 亚洲一区三区在线观看| 四虎5151久久欧美毛片| 91久久精品在线| 久久99久久99精品免观看软件| 欧美日韩成人在线播放| 91成人高清| 欧美国产一级| 日韩一区二区三区免费观看| 免费的毛片视频| 亚洲国产日韩a在线播放性色| jizzjizz日本少妇| 久久久久免费观看| 欧美xxxx×黑人性爽| 国内精品伊人久久久久av影院 | 精品免费视频.| 中文字幕一区2区3区| 欧美小视频在线观看| 久久久久久久黄色| 亚洲天堂成人在线观看| 免费看91的网站| 国产亚洲综合av| 国产人妻人伦精品1国产丝袜| 国产成人99久久亚洲综合精品| 久久久久久久久久久久久久久国产| 久久三级视频| 国产网站免费在线观看| 激情一区二区| 97中文字幕在线| 午夜精品久久| 乱熟女高潮一区二区在线| 忘忧草精品久久久久久久高清| 日韩精品国内| 国产麻豆精品久久| 欧美日韩大片一区二区三区 | 国产高清成人在线| 永久免费黄色片| 国产毛片精品视频| 亚洲自拍第三页| 国内精品伊人久久久久av影院| 日韩av一卡二卡三卡| 国产一区二区三区在线看麻豆| 自拍偷拍21p| 久久爱www久久做| 中文字幕日韩久久| 国产99久久久国产精品免费看 | 91成人入口| 黄色资源网久久资源365| 日本a级片免费观看| 亚洲欧美日韩国产一区| 日韩欧美精品在线观看视频| 欧美亚洲自偷自偷| 人妻无码视频一区二区三区| 奇米四色…亚洲| 国产成人美女视频| 国产精品中文欧美| 亚洲精品鲁一鲁一区二区三区| 成人一区二区三区在线观看| xfplay5566色资源网站| 91亚洲精品乱码久久久久久蜜桃| 91中文字幕永久在线| 国产女人18毛片水真多成人如厕 | 波多野结衣的一区二区三区 | 色婷婷精品久久二区二区蜜臂av | 日韩一区二区电影网| 韩国av电影在线观看| 日韩成人av网| 在线中文资源天堂| 欧美精品在线观看91| 国产拍在线视频| 国产精品2018| 精品一区二区三区视频在线播放| 精品国产福利| 成人午夜av| 人妻av无码专区| 美女诱惑黄网站一区| 91国内在线播放| 成人夜色视频网站在线观看| 在线免费看黄视频| 亚洲免费av在线| 日韩高清免费av| 欧美日韩三级在线| 亚洲男女视频在线观看| 亚洲欧洲在线免费| 在线播放蜜桃麻豆| 国产成人高清激情视频在线观看| 国产一区二区三区四区五区3d| 成人18视频| 精品国产一区二区三区四区| 中文字幕一区二区三区精彩视频 | 亚洲第一狼人区| 成人小视频在线| 亚洲女同二女同志奶水| 五月婷婷综合在线| 91精品国产乱码久久久久| 亚洲国产婷婷香蕉久久久久久| 97人人在线| 91高潮在线观看| 秋霞一区二区| 亚洲伊人婷婷| 日精品一区二区三区| 少妇熟女视频一区二区三区| 中文字幕 久热精品 视频在线| 久久精品女人毛片国产| 欧美人牲a欧美精品| 欧美一区二区少妇| 欧美高清视频在线观看| 欧美啪啪网站| 欧美自拍资源在线| 伊人蜜桃色噜噜激情综合| 五月婷婷之婷婷| 久久久久综合网| 国产精品美女毛片真酒店| 91精品国产色综合久久不卡蜜臀| 黄色在线小视频| 68精品久久久久久欧美| 97久久综合精品久久久综合| 日韩国产精品毛片| 久久精品国内一区二区三区| 欧美亚一区二区三区| 欧美日韩免费网站| 免费观看成年人视频| 欧美成人sm免费视频| 欧美少妇激情| 亚洲春色在线| 日韩电影在线一区二区| av网在线播放| 一道本成人在线| 男女av在线| 国产成人高清激情视频在线观看| 亚洲裸色大胆大尺寸艺术写真| 黄色激情在线视频| 高清国产一区二区| 亚洲成人生活片| 欧美一区国产二区| 黄色av免费在线| 91中文字幕一区| 欧美 日韩 国产精品免费观看| 久久精品国产99久久99久久久| 亚洲婷婷综合久久一本伊一区 | 国产一区二区电影| 日本精品在线免费观看| 8x8x8国产精品| 91小视频xxxx网站在线| 999精品视频一区二区三区| 欧美一区国产在线| 亚洲av无一区二区三区久久| 一区二区在线免费| 亚洲黄色小说网| 午夜精品一区二区三区在线播放 | 亚洲欧美小说色综合小说一区| 狼狼综合久久久久综合网| 亚洲永久网站| 特级西西www444人体聚色| 欧美日韩一级片网站| 国产激情视频在线观看| 国产99午夜精品一区二区三区| 亚洲大胆在线| 无码人妻aⅴ一区二区三区69岛| 欧美性猛交一区二区三区精品| 免费在线观看黄色网| 亚洲在线www| 一区二区三区成人精品| 亚洲精品国产熟女久久久| 欧美三级电影网站| 羞羞网站在线免费观看| 韩日午夜在线资源一区二区| 玖玖国产精品视频| 极品美妇后花庭翘臀娇吟小说| 日韩视频一区在线观看| 欧美激情网站| 亚洲国产一区二区三区在线| 国产成人av电影在线播放| 免费看日批视频| 久久视频在线直播| 国产精品视屏| 日韩一区二区三区不卡视频| 亚洲综合久久av| 国产九九在线| y111111国产精品久久婷婷| 亚洲影音一区| √天堂中文官网8在线| 日韩精品在线看| 国产精品视频一区视频二区| 亚洲欧洲日产国码无码久久99 | 在线日韩av永久免费观看| 国产91高潮流白浆在线麻豆| 中文字幕天堂在线| 欧美成人三级视频网站| 你懂的一区二区三区| 巨乳女教师的诱惑|