3atv精品不卡视频,97人人超碰国产精品最新,中文字幕av一区二区三区人妻少妇,久久久精品波多野结衣,日韩一区二区三区精品

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

理解 JavaScript 闭包

發(fā)布時間:2023/12/10 javascript 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 理解 JavaScript 闭包 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

簡介 Closure 所謂“閉包”,指的是一個擁有許多變量和綁定了這些變量的環(huán)境的表達式(通常是一個函數(shù)),因而這些變量也是該表達式的一部分。 閉包是 ECMAScript (JavaScript)最強大的特性之一,但用好閉包的前提是必須理解閉包。閉包的創(chuàng)建相對容易,人們甚至會在不經(jīng)意間創(chuàng)建閉包,但這些無意創(chuàng)建的閉包卻存在潛在的危害,尤其是在比較常見的瀏覽器環(huán)境下。如果想要揚長避短地使用閉包這一特性,則必須了解它們的工作機制。而閉包工作機制的實現(xiàn)很大程度上有賴于標識符(或者說對象屬性)解析過程中作用域的角色。關(guān)于閉包,最簡單的描述就是 ECMAScript 允許使用內(nèi)部函數(shù)--即函數(shù)定義和函數(shù)表達式位于另一個函數(shù)的函數(shù)體內(nèi)。而且,這些內(nèi)部函數(shù)可以訪問它們所在的外部函數(shù)中聲明的所有局部變量、參數(shù)和聲明的其他內(nèi)部函數(shù)。當其中一個這樣的內(nèi)部函數(shù)在包含它們的外部函數(shù)之外被調(diào)用時,就會形成閉包。也就是說,內(nèi)部函數(shù)會在外部函數(shù)返回后被執(zhí)行。而當這個內(nèi)部函數(shù)執(zhí)行時,它仍然必需訪問其外部函數(shù)的局部變量、參數(shù)以及其他內(nèi)部函數(shù)。這些局部變量、參數(shù)和函數(shù)聲明(最初時)的值是外部函數(shù)返回時的值,但也會受到內(nèi)部函數(shù)的影響。遺憾的是,要適當?shù)乩斫忾]包就必須理解閉包背后運行的機制,以及許多相關(guān)的技術(shù)細節(jié)。雖然本文的前半部分并沒有涉及 ECMA 262 規(guī)范指定的某些算法,但仍然有許多無法回避或簡化的內(nèi)容。對于個別熟悉對象屬性名解析的人來說,可以跳過相關(guān)的內(nèi)容,但是除非你對閉包也非常熟悉,否則最好是不要跳過下面幾節(jié)。對象屬性名解析 ECMAScript 認可兩類對象:原生(Native)對象和宿主(Host)對象,其中宿主對象包含一個被稱為內(nèi)置對象的原生對象的子類(ECMA 262 3rd Ed Section 4.3)。原生對象屬于語言,而宿主對象由環(huán)境提供,比如說可能是文檔對象、DOM 等類似的對象。原生對象具有松散和動態(tài)的命名屬性(對于某些實現(xiàn)的內(nèi)置對象子類別而言,動態(tài)性是受限的--但這不是太大的問題)。對象的命名屬性用于保存值,該值可以是指向另一個對象(Objects)的引用(在這個意義上說,函數(shù)也是對象),也可以是一些基本的數(shù)據(jù)類型,比如:String、Number、Boolean、Null 或 Undefined。其中比較特殊的是 Undefined 類型,因為可以給對象的屬性指定一個 Undefined 類型的值,而不會刪除對象的相應(yīng)屬性。而且,該屬性只是保存著 undefined 值。下面簡要介紹一下如何設(shè)置和讀取對象的屬性值,并最大程度地體現(xiàn)相應(yīng)的內(nèi)部細節(jié)。值的賦予 對象的命名屬性可以通過為該命名屬性賦值來創(chuàng)建,或重新賦值。即,對于:var objectRef = new Object(); //創(chuàng)建一個普通的 javascript 對象。 可以通過下面語句來創(chuàng)建名為 “testNumber” 的屬性:objectRef.testNumber = 5; /* - 或- */ objectRef["testNumber"] = 5; 在賦值之前,對象中沒有“testNumber” 屬性,但在賦值后,則創(chuàng)建一個屬性。之后的任何賦值語句都不需要再創(chuàng)建這個屬性,而只會重新設(shè)置它的值:objectRef.testNumber = 8; /* - 或- */ objectRef["testNumber"] = 8; 稍后我們會介紹,Javascript 對象都有原型(prototypes)屬性,而這些原型本身也是對象,因而也可以帶有命名的屬性。但是,原型對象命名屬性的作用并不體現(xiàn)在賦值階段。同樣,在將值賦給其命名屬性時,如果對象沒有該屬性則會創(chuàng)建該命名屬性,否則會重設(shè)該屬性的值。值的讀取 當讀取對象的屬性值時,原型對象的作用便體現(xiàn)出來。如果對象的原型中包含屬性訪問器(property accessor)所使用的屬性名,那么該屬性的值就會返回:/* 為命名屬性賦值。如果在賦值前對象沒有相應(yīng)的屬性,那么賦值后就會得到一個:*/ objectRef.testNumber = 8;/* 從屬性中讀取值 */var val = objectRef.testNumber; /* 現(xiàn)在, - val - 中保存著剛賦給對象命名屬性的值 8*/而且,由于所有對象都有原型,而原型本身也是對象,所以原型也可能有原型,這樣就構(gòu)成了所謂的原型鏈。原型鏈終止于鏈中原型為 null 的對象。Object 構(gòu)造函數(shù)的默認原型就有一個 null 原型,因此:var objectRef = new Object(); //創(chuàng)建一個普通的 JavaScript 對象。 創(chuàng)建了一個原型為 Object.prototype 的對象,而該原型自身則擁有一個值為 null 的原型。也就是說,objectRef 的原型鏈中只包含一個對象-- Object.prototype。但對于下面的代碼而言:/* 創(chuàng)建 - MyObject1 - 類型對象的函數(shù)*/ function MyObject1(formalParameter){/* 給創(chuàng)建的對象添加一個名為 - testNumber - 的屬性并將傳遞給構(gòu)造函數(shù)的第一個參數(shù)指定為該屬性的值:*/this.testNumber = formalParameter; }/* 創(chuàng)建 - MyObject2 - 類型對象的函數(shù)*/ function MyObject2(formalParameter){/* 給創(chuàng)建的對象添加一個名為 - testString - 的屬性并將傳遞給構(gòu)造函數(shù)的第一個參數(shù)指定為該屬性的值:*/this.testString = formalParameter; }/* 接下來的操作用 MyObject1 類的實例替換了所有與 MyObject2 類的實例相關(guān)聯(lián)的原型。而且,為 MyObject1 構(gòu)造函數(shù)傳遞了參數(shù) - 8 - ,因而其 - testNumber - 屬性被賦予該值:*/ MyObject2.prototype = new MyObject1( 8 );/* 最后,將一個字符串作為構(gòu)造函數(shù)的第一個參數(shù), 創(chuàng)建一個 - MyObject2 - 的實例,并將指向該對象的 引用賦給變量 - objectRef - :*/var objectRef = new MyObject2( "String_Value" ); 被變量 objectRef 所引用的 MyObject2 的實例擁有一個原型鏈。該鏈中的第一個對象是在創(chuàng)建后被指定給 MyObject2 構(gòu)造函數(shù)的 prototype 屬性的 MyObject1 的一個實例。MyObject1 的實例也有一個原型,即與 Object.prototype 所引用的對象對應(yīng)的默認的 Object 對象的原型。最后, Object.prototype 有一個值為 null 的原型,因此這條原型鏈到此結(jié)束。當某個屬性訪問器嘗試讀取由 objectRef 所引用的對象的屬性值時,整個原型鏈都會被搜索。在下面這種簡單的情況下:var val = objectRef.testString; 因為 objectRef 所引用的 MyObject2 的實例有一個名為“testString”的屬性,因此被設(shè)置為“String_Value”的該屬性的值被賦給了變量 val。但是:var val = objectRef.testNumber; 則不能從 MyObject2 實例自身中讀取到相應(yīng)的命名屬性值,因為該實例沒有這個屬性。然而,變量 val 的值仍然被設(shè)置為 8,而不是未定義--這是因為在該實例中查找相應(yīng)的命名屬性失敗后,解釋程序會繼續(xù)檢查其原型對象。而該實例的原型對象是 MyObject1 的實例,這個實例有一個名為“testNumber”的屬性并且值為 8,所以這個屬性訪問器最后會取得值 8。而且,雖然 MyObject1 和 MyObject2 都沒有定義 toString 方法,但是當屬性訪問器通過 objectRef 讀取 toString 屬性的值時:var val = objectRef.toString; 變量 val 也會被賦予一個函數(shù)的引用。這個函數(shù)就是在 Object.prototype 的 toString 屬性中所保存的函數(shù)。之所以會返回這個函數(shù),是因為發(fā)生了搜索objectRef 原型鏈的過程。當在作為對象的 objectRef 中發(fā)現(xiàn)沒有“toString”屬性存在時,會搜索其原型對象,而當原型對象中不存在該屬性時,則會繼續(xù)搜索原型的原型。而原型鏈中最終的原型是 Object.prototype,這個對象確實有一個 toString 方法,因此該方法的引用被返回。最后:var val = objectRef.madeUpProperty; 返回 undefined,因為在搜索原型鏈的過程中,直至 Object.prototype 的原型--null,都沒有找到任何對象有名為“madeUpPeoperty”的屬性,因此最終返回 undefined。不論是在對象或?qū)ο蟮脑椭?#xff0c;讀取命名屬性值的時候只返回首先找到的屬性值。而當為對象的命名屬性賦值時,如果對象自身不存在該屬性則創(chuàng)建相應(yīng)的屬性。這意味著,如果執(zhí)行像 objectRef.testNumber = 3 這樣一條賦值語句,那么這個 MyObject2 的實例自身也會創(chuàng)建一個名為“testNumber”的屬性,而之后任何讀取該命名屬性的嘗試都將獲得相同的新值。這時候,屬性訪問器不會再進一步搜索原型鏈,但 MyObject1 實例值為 8 的“testNumber”屬性并沒有被修改。給 objectRef 對象的賦值只是遮擋了其原型鏈中相應(yīng)的屬性。注意:ECMAScript 為 Object 類型定義了一個內(nèi)部 [[prototype]] 屬性。這個屬性不能通過腳本直接訪問,但在屬性訪問器解析過程中,則需要用到這個內(nèi)部 [[prototype]] 屬性所引用的對象鏈--即原型鏈??梢酝ㄟ^一個公共的 prototype 屬性,來對與內(nèi)部的 [[prototype]] 屬性對應(yīng)的原型對象進行賦值或定義。這兩者之間的關(guān)系在 ECMA 262(3rd edition)中有詳細描述,但超出了本文要討論的范疇。標識符解析、執(zhí)行環(huán)境和作用域鏈 執(zhí)行環(huán)境 執(zhí)行環(huán)境是 ECMAScript 規(guī)范(ECMA 262 第 3 版)用于定義 ECMAScript 實現(xiàn)必要行為的一個抽象的概念。對如何實現(xiàn)執(zhí)行環(huán)境,規(guī)范沒有作規(guī)定。但由于執(zhí)行環(huán)境中包含引用規(guī)范所定義結(jié)構(gòu)的相關(guān)屬性,因此執(zhí)行環(huán)境中應(yīng)該保有(甚至實現(xiàn))帶有屬性的對象--即使屬性不是公共屬性。所有 JavaScript 代碼都是在一個執(zhí)行環(huán)境中被執(zhí)行的。全局代碼(作為內(nèi)置的 JS 文件執(zhí)行的代碼,或者 HTML 頁面加載的代碼)是在我將稱之為“全局執(zhí)行環(huán)境”的執(zhí)行環(huán)境中執(zhí)行的,而對函數(shù)的每次調(diào)用(有可能是作為構(gòu)造函數(shù))同樣有關(guān)聯(lián)的執(zhí)行環(huán)境。通過 eval 函數(shù)執(zhí)行的代碼也有截然不同的執(zhí)行環(huán)境,但因為 JavaScript 程序員在正常情況下一般不會使用 eval,所以這里不作討論。有關(guān)執(zhí)行環(huán)境的詳細說明請參閱 ECMA 262(第 3 版)第 10.2 節(jié)。當調(diào)用一個 JavaScript 函數(shù)時,該函數(shù)就會進入相應(yīng)的執(zhí)行環(huán)境。如果又調(diào)用了另外一個函數(shù)(或者遞歸地調(diào)用同一個函數(shù)),則又會創(chuàng)建一個新的執(zhí)行環(huán)境,并且在函數(shù)調(diào)用期間執(zhí)行過程都處于該環(huán)境中。當調(diào)用的函數(shù)返回后,執(zhí)行過程會返回原始執(zhí)行環(huán)境。因而,運行中的 JavaScript 代碼就構(gòu)成了一個執(zhí)行環(huán)境棧。在創(chuàng)建執(zhí)行環(huán)境的過程中,會按照定義的先后順序完成一系列操作。首先,在一個函數(shù)的執(zhí)行環(huán)境中,會創(chuàng)建一個“活動”對象?;顒訉ο笫且?guī)范中規(guī)定的另外一種機制。之所以稱之為對象,是因為它擁有可訪問的命名屬性,但是它又不像正常對象那樣具有原型(至少沒有預(yù)定義的原型),而且不能通過 JavaScript 代碼直接引用活動對象。為函數(shù)調(diào)用創(chuàng)建執(zhí)行環(huán)境的下一步是創(chuàng)建一個 arguments 對象,這是一個類似數(shù)組的對象,它以整數(shù)索引的數(shù)組成員一一對應(yīng)地保存著調(diào)用函數(shù)時所傳遞的參數(shù)。這個對象也有 length 和 callee 屬性(這兩個屬性與我們討論的內(nèi)容無關(guān),詳見規(guī)范)。然后,會為活動對象創(chuàng)建一個名為“arguments”的屬性,該屬性引用前面創(chuàng)建的 arguments 對象。接著,為執(zhí)行環(huán)境分配作用域。作用域由對象列表(鏈)組成。每個函數(shù)對象都有一個內(nèi)部的 [[scope]] 屬性(該屬性我們稍后會詳細介紹),這個屬性也由對象列表(鏈)組成。指定給一個函數(shù)調(diào)用執(zhí)行環(huán)境的作用域,由該函數(shù)對象的 [[scope]] 屬性所引用的對象列表(鏈)組成,同時,活動對象被添加到該對象列表的頂部(鏈的前端)。之后會發(fā)生由 ECMA 262 中所謂“可變”對象完成的“變量實例化”的過程。只不過此時使用活動對象作為可變對象(這里很重要,請注意:它們是同一個對象)。此時會將函數(shù)的形式參數(shù)創(chuàng)建為可變對象命名屬性,如果調(diào)用函數(shù)時傳遞的參數(shù)與形式參數(shù)一致,則將相應(yīng)參數(shù)的值賦給這些命名屬性(否則,會給命名屬性賦 undefined 值)。對于定義的內(nèi)部函數(shù),會以其聲明時所用名稱為可變對象創(chuàng)建同名屬性,而相應(yīng)的內(nèi)部函數(shù)則被創(chuàng)建為函數(shù)對象并指定給該屬性。變量實例化的最后一步是將在函數(shù)內(nèi)部聲明的所有局部變量創(chuàng)建為可變對象的命名屬性。根據(jù)聲明的局部變量創(chuàng)建的可變對象的屬性在變量實例化過程會被賦予 undefined 值。在執(zhí)行函數(shù)體內(nèi)的代碼、并計算相應(yīng)的賦值表達式之前不會對局部變量執(zhí)行真正的實例化。事實上,擁有 arguments 屬性的活動對象和擁有與函數(shù)局部變量對應(yīng)的命名屬性的可變對象是同一個對象。因此,可以將標識符 arguments 作為函數(shù)的局部變量來看待?;氐巾敳?最后,在this可以被使用之前,還必須先對其賦值。如果賦的值是一個對象的引用,則 this.m 訪問的便是該對象上的 m。如果(內(nèi)部)賦的值是 null,則this就指向全局對象。 (此段由 pangba 劉未鵬 翻譯)(原文備考:Finally a value is assigned for use with the this keyword. If the value assigned refers to an object then property accessors prefixed with the this keyword reference properties of that object. If the value assigned (internally) is null then the this keyword will refer to the global object. )創(chuàng)建全局執(zhí)行環(huán)境的過程會稍有不同,因為它沒有參數(shù),所以不需要通過定義的活動對象來引用這些參數(shù)。但全局執(zhí)行環(huán)境也需要一個作用域,而它的作用域鏈實際上只由一個對象--全局對象--組成。全局執(zhí)行環(huán)境也會有變量實例化的過程,它的內(nèi)部函數(shù)就是涉及大部分 JavaScript 代碼的、常規(guī)的頂級函數(shù)聲明。而且,在變量實例化過程中全局對象就是可變對象,這就是為什么全局性聲明的函數(shù)是全局對象屬性的原因。全局性聲明的變量同樣如此。全局執(zhí)行環(huán)境也會使用 this 對象來引用全局對象。作用域鏈與 [[scope]] 調(diào)用函數(shù)時創(chuàng)建的執(zhí)行環(huán)境會包含一個作用域鏈,這個作用域鏈是通過將該執(zhí)行環(huán)境的活動(可變)對象添加到保存于所調(diào)用函數(shù)對象的 [[scope]] 屬性中的作用域鏈前端而構(gòu)成的。所以,理解函數(shù)對象內(nèi)部的 [[scope]] 屬性的定義過程至關(guān)重要。在 ECMAScript 中,函數(shù)也是對象。函數(shù)對象在變量實例化過程中會根據(jù)函數(shù)聲明來創(chuàng)建,或者是在計算函數(shù)表達式或調(diào)用 Function 構(gòu)造函數(shù)時創(chuàng)建。通過調(diào)用 Function 構(gòu)造函數(shù)創(chuàng)建的函數(shù)對象,其內(nèi)部的 [[scope]] 屬性引用的作用域鏈中始終只包含全局對象。通過函數(shù)聲明或函數(shù)表達式創(chuàng)建的函數(shù)對象,其內(nèi)部的 [[scope]] 屬性引用的則是創(chuàng)建它們的執(zhí)行環(huán)境的作用域鏈。在最簡單的情況下,比如聲明如下全局函數(shù):-function exampleFunction(formalParameter){... // 函數(shù)體內(nèi)的代碼 } 當為創(chuàng)建全局執(zhí)行環(huán)境而進行變量實例化時,會根據(jù)上面的函數(shù)聲明創(chuàng)建相應(yīng)的函數(shù)對象。因為全局執(zhí)行環(huán)境的作用域鏈中只包含全局對象,所以它就給自己創(chuàng)建的、并以名為“exampleFunction”的屬性引用的這個函數(shù)對象的內(nèi)部 [[scope]] 屬性,賦予了只包含全局對象的作用域鏈。當在全局環(huán)境中計算函數(shù)表達式時,也會發(fā)生類似的指定作用域鏈的過程:-var exampleFuncRef = function(){... // 函數(shù)體代碼 } 在這種情況下,不同的是在全局執(zhí)行環(huán)境的變量實例化過程中,會先為全局對象創(chuàng)建一個命名屬性。而在計算賦值語句之前,暫時不會創(chuàng)建函數(shù)對象,也不會將該函數(shù)對象的引用指定給全局對象的命名屬性。但是,最終還是會在全局執(zhí)行環(huán)境中創(chuàng)建這個函數(shù)對象(當計算函數(shù)表達式時。譯者注),而為這個創(chuàng)建的函數(shù)對象的 [[scope]] 屬性指定的作用域鏈中仍然只包含全局對象。內(nèi)部的函數(shù)聲明或表達式會導致在包含它們的外部函數(shù)的執(zhí)行環(huán)境中創(chuàng)建相應(yīng)的函數(shù)對象,因此這些函數(shù)對象的作用域鏈會稍微復(fù)雜一些。在下面的代碼中,先定義了一個帶有內(nèi)部函數(shù)聲明的外部函數(shù),然后調(diào)用外部函數(shù):function exampleOuterFunction(formalParameter){function exampleInnerFuncitonDec(){... // 內(nèi)部函數(shù)體代碼}... // 其余的外部函數(shù)體代碼 }exampleOuterFunction( 5 ); 與外部函數(shù)聲明對應(yīng)的函數(shù)對象會在全局執(zhí)行環(huán)境的變量實例化過程中被創(chuàng)建。因此,外部函數(shù)對象的 [[scope]] 屬性中會包含一個只有全局對象的“單項目”作用域鏈。當在全局執(zhí)行環(huán)境中調(diào)用 exampleOuterFunction 函數(shù)時,會為該函數(shù)調(diào)用創(chuàng)建一個新的執(zhí)行環(huán)境和一個活動(可變)對象。這個新執(zhí)行環(huán)境的作用域就由新的活動對象后跟外部函數(shù)對象的 [[scope]] 屬性所引用的作用域鏈(只有全局對象)構(gòu)成。在新執(zhí)行環(huán)境的變量實例化過程中,會創(chuàng)建一個與內(nèi)部函數(shù)聲明對應(yīng)的函數(shù)對象,而同時會給這個函數(shù)對象的 [[scope]] 屬性指定創(chuàng)建該函數(shù)對象的執(zhí)行環(huán)境(即新執(zhí)行環(huán)境。譯者注)的作用域值--即一個包含活動對象后跟全局對象的作用域鏈。到目前為止,所有過程都是自動、或者由源代碼的結(jié)構(gòu)所控制的。但我們發(fā)現(xiàn),執(zhí)行環(huán)境的作用域鏈定義了執(zhí)行環(huán)境所創(chuàng)建的函數(shù)對象的 [[scope]] 屬性,而函數(shù)對象的 [[scope]] 屬性則定義了它的執(zhí)行環(huán)境的作用域(包括相應(yīng)的活動對象)。不過,ECMAScript 也提供了用于修改作用域鏈 with 語句。with 語句會計算一個表達式,如果該表達式是一個對象,那么就將這個對象添加到當前執(zhí)行環(huán)境的作用域鏈中(在活動<可變>對象之前)。然后,執(zhí)行 with 語句(它自身也可能是一個語句塊)中的其他語句。之后,又恢復(fù)到調(diào)用它之前的執(zhí)行環(huán)境的作用域鏈中。with 語句不會影響在變量實例化過程中根據(jù)函數(shù)聲明創(chuàng)建函數(shù)對象。但是,可以在一個 with 語句內(nèi)部對函數(shù)表達式求值:-/* 創(chuàng)建全局變量 - y - 它引用一個對象:- */ var y = {x:5}; // 帶有一個屬性 - x - 的對象直接量 function exampleFuncWith(){var z;/* 將全局對象 - y - 引用的對象添加到作用域鏈的前端:- */with(y){/* 對函數(shù)表達式求值,以創(chuàng)建函數(shù)對象并將該函數(shù)對象的引用指定給局部變量 - z - :- */z = function(){... // 內(nèi)部函數(shù)表達式中的代碼;}}... }/* 執(zhí)行 - exampleFuncWith - 函數(shù):- */ exampleFuncWith(); 在調(diào)用 exampleFuncWith 函數(shù)所創(chuàng)建的執(zhí)行環(huán)境中包含一個由其活動對象后跟全局對象構(gòu)成的作用域鏈。而在執(zhí)行 with 語句時,又會把全局變量 y 引用的對象添加到這個作用域鏈的前端。在對其中的函數(shù)表達式求值的過程中,所創(chuàng)建函數(shù)對象的 [[scope]] 屬性與創(chuàng)建它的執(zhí)行環(huán)境的作用域保持一致--即,該屬性會引用一個由對象 y 后跟調(diào)用外部函數(shù)時所創(chuàng)建執(zhí)行環(huán)境的活動對象,后跟全局對象的作用域鏈。當與 with 語句相關(guān)的語句塊執(zhí)行結(jié)束時,執(zhí)行環(huán)境的作用域得以恢復(fù)(y 會被移除),但是已經(jīng)創(chuàng)建的函數(shù)對象(z。譯者注)的 [[scope]] 屬性所引用的作用域鏈中位于最前面的仍然是對象 y。標識符解析 標識符是沿作用域鏈逆向解析的。ECMA 262 將 this 歸類為關(guān)鍵字而不是標識符,并非不合理。因為解析 this 值時始終要根據(jù)使用它的執(zhí)行環(huán)境來判斷,而與作用域鏈無關(guān)。標識符解析從作用域鏈中的第一個對象開始。檢查該對象中是否包含與標識符對應(yīng)的屬性名。因為作用域鏈是一條對象鏈,所以這個檢查過程也會包含相應(yīng)對象的原型鏈(如果有)。如果沒有在作用域鏈的第一個對象中發(fā)現(xiàn)相應(yīng)的值,解析過程會繼續(xù)搜索下一個對象。這樣依次類推直至找到作用域鏈中包含以標識符為屬性名的對象為止,也有可能在作用域鏈的所有對象中都沒有發(fā)現(xiàn)該標識符。當基于對象使用屬性訪問器時,也會發(fā)生與上面相同的標識符解析過程。當屬性訪問器中有相應(yīng)的屬性可以替換某個對象時,這個屬性就成為表示該對象的標識符,該對象在作用域鏈中的位置進而被確定。全局對象始終都位于作用域鏈的尾端。因為與函數(shù)調(diào)用相關(guān)的執(zhí)行環(huán)境將會把活動(可變)對象添加到作用域鏈的前端,所以在函數(shù)體內(nèi)使用的標識符會首先檢查自己是否與形式參數(shù)、內(nèi)部函數(shù)聲明的名稱或局部變量一致。這些都可以由活動(可變)對象的命名屬性來確定。閉包 自動垃圾收集 ECMAScript 要求使用自動垃圾收集機制。但規(guī)范中并沒有詳細說明相關(guān)的細節(jié),而是留給了實現(xiàn)來決定。但據(jù)了解,相當一部分實現(xiàn)對它們的垃圾收集操作只賦予了很低的優(yōu)先級。但是,大致的思想都是相同的,即如果對象不再“可引用(由于不存在對它的引用,使執(zhí)行代碼無法再訪問到它)”時,該對象就成為垃圾收集的目標。因而,在將來的某個時刻會將這個對象銷毀并將它所占用的一切資源釋放,以便操作系統(tǒng)重新利用。正常情況下,當退出一個執(zhí)行環(huán)境時就會滿足類似的條件。此時,作用域鏈結(jié)構(gòu)中的活動(可變)對象以及在該執(zhí)行環(huán)境中創(chuàng)建的任何對象--包括函數(shù)對象,都不再“可引用”,因此將成為垃圾收集的目標。構(gòu)成閉包 閉包是通過在對一個函數(shù)調(diào)用的執(zhí)行環(huán)境中返回一個函數(shù)對象構(gòu)成的。比如,在對函數(shù)調(diào)用的過程中,將一個對內(nèi)部函數(shù)對象的引用指定給另一個對象的屬性。或者,直接將這樣一個(內(nèi)部)函數(shù)對象的引用指定給一個全局變量、或者一個全局性對象的屬性,或者一個作為參數(shù)以引用方式傳遞給外部函數(shù)的對象。例如:-function exampleClosureForm(arg1, arg2){var localVar = 8;function exampleReturned(innerArg){return ((arg1 + arg2)/(innerArg + localVar));}/* 返回一個定義為 exampleReturned 的內(nèi)部函數(shù)的引用 -:- */return exampleReturned; }var globalVar = exampleClosureForm(2, 4); 這種情況下,在調(diào)用外部函數(shù) exampleClosureForm 的執(zhí)行環(huán)境中所創(chuàng)建的函數(shù)對象就不會被當作垃圾收集,因為該函數(shù)對象被一個全局變量所引用,而且仍然是可以訪問的,甚至可以通過 globalVar(n) 來執(zhí)行。的確,情況比正常的時候要復(fù)雜一些。因為現(xiàn)在這個被變量 globalVar 引用的內(nèi)部函數(shù)對象的 [[scope]] 屬性所引用的作用域鏈中,包含著屬于創(chuàng)建該內(nèi)部函數(shù)對象的執(zhí)行環(huán)境的活動對象(和全局對象)。由于在執(zhí)行被 globalVar 引用的函數(shù)對象時,每次都要把該函數(shù)對象的 [[scope]] 屬性所引用的整個作用域鏈添加到創(chuàng)建的(內(nèi)部函數(shù)的)執(zhí)行環(huán)境的作用域中(即此時的作用域中包括:內(nèi)部執(zhí)行環(huán)境的活動對象、外部執(zhí)行環(huán)境的活動對象、全局對象。譯者注), 所以這個(外部執(zhí)行環(huán)境的)活動對象不會被當作垃圾收集。閉包因此而構(gòu)成。此時,內(nèi)部函數(shù)對象擁有自由的變量,而位于該函數(shù)作用域鏈中的活動(可變)對象則成為與變量綁定的環(huán)境。由于活動(可變)對象受限于內(nèi)部函數(shù)對象(現(xiàn)在被 globalVar 變量引用)的 [[scope]] 屬性中作用域鏈的引用,所以活動對象連同它的變量聲明--即屬性的值,都會被保留。而在對內(nèi)部函數(shù)調(diào)用的執(zhí)行環(huán)境中進行作用域解析時,將會把與活動(可變)對象的命名屬性一致的標識符作為該對象的屬性來解析?;顒訉ο蟮倪@些屬性值即使是在創(chuàng)建它的執(zhí)行環(huán)境退出后,仍然可以被讀取和設(shè)置。在上面的例子中,當外部函數(shù)返回(退出它的執(zhí)行環(huán)境)時,其活動(可變)對象的變量聲明中記錄了形式參數(shù)、內(nèi)部函數(shù)定義以及局部變量的值。arg1 屬性的值為 2,而 arg2 屬性的值為 4,localVar 的值是 8,還有一個 exampleReturned 屬性,它引用由外部函數(shù)返回的內(nèi)部函數(shù)對象。(為方便起見,我們將在后面的討論中,稱這個活動<可變>對象為 "ActOuter1")。如果再次調(diào)用 exampleClosureForm 函數(shù),如:-var secondGlobalVar = exampleClosureForm(12, 3); - 則會創(chuàng)建一個新的執(zhí)行環(huán)境和一個新的活動對象。而且,會返回一個新的函數(shù)對象,該函數(shù)對象的 [[scope]] 屬性引用的作用域鏈與前一次不同,因為這一次的作用域鏈中包含著第二個執(zhí)行環(huán)境的活動對象,而這個活動對象的屬性 arg1 值為 12 而屬性 arg2 值為 3。(為方便起見,我們將在后面的討論中,稱這個活動<可變>對象為 "ActOuter2")。通過第二次執(zhí)行 exampleClosureForm 函數(shù),第二個、也是截然不同的閉包誕生了。通過執(zhí)行 exampleClosureForm 創(chuàng)建的兩個函數(shù)對象分別被指定給了全局變量 globalVar 和 secondGlobalVar,并返回了表達式 ((arg1 + arg2)/(innerArg + localVar))。該表達式對其中的四個標識符應(yīng)用了不同的操作符。如何確定這些標識符的值是體現(xiàn)閉包價值的關(guān)鍵所在。我們來看一看,在執(zhí)行由 globalVar 引用的函數(shù)對象--如 globalVar(2)--時的情形。此時,會創(chuàng)建一個新的執(zhí)行環(huán)境和相應(yīng)的活動對象(我們將稱之為“ActInner1”),并把該活動對象添加到執(zhí)行的函數(shù)對象的 [[scope]] 屬性所引用的作用域鏈的前端。ActInner1 會帶有一個屬性 innerArg,根據(jù)傳遞的形式參數(shù),其值被指定為 2。這個新執(zhí)行環(huán)境的作用域鏈變成: ActInner1->ActOuter1->全局對象.為了返回表達式 ((arg1 + arg2)/(innerArg + localVar)) 的值,要沿著作用域鏈進行標識符解析。表達式中標識符的值將通過依次查找作用域鏈中每個對象(與標識符名稱一致)的屬性來確定。作用域鏈中的第一個對象是 ActInner1,它有一個名為 innerArg 的屬性,值是 2。所有其他三個標識符在 ActOuter1 中都有對應(yīng)的屬性:arg1 是 2,arg2 是 4 而 localVar 是 8。最后,函數(shù)調(diào)用返回 ((2 + 2)/(2 + 8))。現(xiàn)在再來看一看由 secondGlobalVar 引用的同一個函數(shù)對象的執(zhí)行情況,比如 secondGlobalVar(5)。我們把這次創(chuàng)建的新執(zhí)行環(huán)境的活動對象稱為 “ActInner2”,相應(yīng)的作用域鏈就變成了:ActInner2->ActOuter2->全局對象。ActInner2 返回 innerArg 的值 5,而 ActOuter2 分別返回 arg1、arg2 和 localVar 的值 12、3 和 8。函數(shù)調(diào)用返回的值就是 ((12 + 3)/(5 + 8))。如果再執(zhí)行一次 secondGlobalVar,則又會有一個新活動對象被添加到作用域鏈的前端,但 ActOuter2 仍然是鏈中的第二個對象,而他的命名屬性會再次用于完成標識符 arg1、arg2 和 localVar 的解析。這就是 ECMAScript 的內(nèi)部函數(shù)獲取、維持和訪問創(chuàng)建他們的執(zhí)行環(huán)境的形式參數(shù)、聲明的內(nèi)部函數(shù)以及局部變量的過程。這個過程說明了構(gòu)成閉包以后,內(nèi)部的函數(shù)對象在其存續(xù)過程中,如何維持對這些值的引用、如何對這些值進行讀取的機制。即,創(chuàng)建內(nèi)部函數(shù)對象的執(zhí)行環(huán)境的活動(可變)對象,會保留在該函數(shù)對象的 [[scope]] 屬性所引用的作用域鏈中。直到所有對這個內(nèi)部函數(shù)的引用被釋放,這個函數(shù)對象才會成為垃圾收集的目標(連同它的作用域鏈中任何不再需要的對象)。內(nèi)部函數(shù)自身也可能有內(nèi)部函數(shù)。在通過函數(shù)執(zhí)行返回內(nèi)部函數(shù)構(gòu)成閉包以后,相應(yīng)的閉包自身也可能會返回內(nèi)部函數(shù)從而構(gòu)成它們自己的閉包。每次作用域鏈嵌套,都會增加由創(chuàng)建內(nèi)部函數(shù)對象的執(zhí)行環(huán)境引發(fā)的新活動對象。ECMAScript 規(guī)范要求作用域鏈是臨時性的,但對作用域鏈的長度卻沒有加以限制。在具體實現(xiàn)中,可能會存在實際的限制,但還沒有發(fā)現(xiàn)有具體限制數(shù)量的報告。目前來看,嵌套的內(nèi)部函數(shù)所擁有的潛能,仍然超出了使用它們的人的想像能力。通過閉包可以做什么? 對這個問題的回答可能會令你驚訝--閉包什么都可以做。據(jù)我所知,閉包使得 ECMAScript 能夠模仿任何事物,因此局限性在于設(shè)計和實現(xiàn)要模仿事物的能力。只是從字面上看可能會覺得這么說很深奧,下面我們就來看一些更有實際意義的例子。例 1:為函數(shù)引用設(shè)置延時 閉包的一個常見用法是在執(zhí)行函數(shù)之前為要執(zhí)行的函數(shù)提供參數(shù)。例如:將函數(shù)作為 setTimout 函數(shù)的第一個參數(shù),這在 Web 瀏覽器的環(huán)境下是非常常見的一種應(yīng)用。setTimeout 用于有計劃地執(zhí)行一個函數(shù)(或者一串 JavaScript 代碼,不是在本例中),要執(zhí)行的函數(shù)是其第一個參數(shù),其第二個參數(shù)是以毫秒表示的執(zhí)行間隔。也就是說,當在一段代碼中使用 setTimeout 時,要將一個函數(shù)的引用作為它的第一個參數(shù),而將以毫秒表示的時間值作為第二個參數(shù)。但是,傳遞函數(shù)引用的同時無法為計劃執(zhí)行的函數(shù)提供參數(shù)。然而,可以在代碼中調(diào)用另外一個函數(shù),由它返回一個對內(nèi)部函數(shù)的引用,再把這個對內(nèi)部函數(shù)對象的引用傳遞給 setTimeout 函數(shù)。執(zhí)行這個內(nèi)部函數(shù)時要使用的參數(shù)在調(diào)用返回它的外部函數(shù)時傳遞。這樣,setTimeout 在執(zhí)行這個內(nèi)部函數(shù)時,不用傳遞參數(shù),但該內(nèi)部函數(shù)仍然能夠訪問在調(diào)用返回它的外部函數(shù)時傳遞的參數(shù):function callLater(paramA, paramB, paramC){/* 返回一個由函數(shù)表達式創(chuàng)建的匿名內(nèi)部函數(shù)的引用:- */return (function(){/* 這個內(nèi)部函數(shù)將通過 - setTimeout - 執(zhí)行,而且當它執(zhí)行時它會讀取并按照傳遞給外部函數(shù)的參數(shù)行事:*/paramA[paramB] = paramC;}); }.../* 調(diào)用這個函數(shù)將返回一個在其執(zhí)行環(huán)境中創(chuàng)建的內(nèi)部函數(shù)對象的引用。傳遞的參數(shù)最終將作為外部函數(shù)的參數(shù)被內(nèi)部函數(shù)使用。返回的對內(nèi)部函數(shù)的引用被賦給一個全局變量:- */var functRef = callLater(elStyle, "display", "none"); /* 調(diào)用 setTimeout 函數(shù),將賦給變量 - functRef - 的內(nèi)部函數(shù)的引用作為傳遞的第一個參數(shù):- */ hideMenu=setTimeout(functRef, 500); 例 2: 通過對象實例方法關(guān)聯(lián)函數(shù) 回到頂部 許多時候我們需要將一個函數(shù)對象暫時掛到一個引用上留待后面執(zhí)行,因為不等到執(zhí)行的時候是很難知道其具體參數(shù)的,而先前將它賦給那個引用的時候更是壓根不知道的。 (此段由 pangba 劉未鵬 翻譯)(luyy朋友的翻譯_2008-7-7更新)很多時候需要將一個函數(shù)引用進行賦值,以便在將來某個時候執(zhí)行該函數(shù),在執(zhí)行這些函數(shù)時給函數(shù)提供參數(shù)將會是有用處的,但這些參數(shù)在執(zhí)行時不容易獲得,他們只有在上面賦值給時才能確定。(原文備考:There are many other circumstances when a reference to a function object is assigned so that it would be executed at some future time where it is useful to provide parameters for the execution of that function that would not be easily available at the time of execution but cannot be known until the moment of assignment.)一個相關(guān)的例子是,用 JavaScript 對象來封裝與特定 DOM 元素的交互。這個 JavaScript 對象具有 doOnClick、doMouseOver 和 doMouseOut 方法,并且當用戶在該特定的 DOM 元素中觸發(fā)了相應(yīng)的事件時要執(zhí)行這些方法。不過,可能會創(chuàng)建與不同的 DOM 元素關(guān)聯(lián)的任意數(shù)量的 JavaScript 對象,而且每個對象實例并不知道實例化它們的代碼將會如何操縱它們(即注冊事件處理函數(shù)與定義相應(yīng)的事件處理函數(shù)分離。譯者注)。這些對象實例并不知道如何在全局環(huán)境中引用它們自身,因為它們不知道將會指定哪個全局變量(如果有)引用它們的實例。因而問題可以歸結(jié)為執(zhí)行一個與特定的 JavaScript 對象關(guān)聯(lián)的事件處理函數(shù),并且要知道調(diào)用該對象的哪個方法。下面這個例子使用了一個基于閉包構(gòu)建的一般化的函數(shù)(此句多謝未鵬指點),該函數(shù)會將對象實例與 DOM 元素事件關(guān)聯(lián)起來,安排執(zhí)行事件處理程序時調(diào)用對象實例的指定方法,給象的指定方法傳遞的參數(shù)是事件對象和與元素關(guān)聯(lián)的引用,該函數(shù)返回執(zhí)行相應(yīng)方法后的返回值。/* 一個關(guān)聯(lián)對象實例和事件處理器的函數(shù)。 它返回的內(nèi)部函數(shù)被用作事件處理器。對象實例以 - obj - 參數(shù)表示, 而在該對象實例中調(diào)用的方法名則以 - methodName - (字符串)參數(shù)表示。 */ function associateObjWithEvent(obj, methodName){/* 下面這個返回的內(nèi)部函數(shù)將作為一個 DOM 元素的事件處理器*/ return (function(e){/* 在支持標準 DOM 規(guī)范的瀏覽器中,事件對象會被解析為參數(shù) - e - , 若沒有正常解析,則使用 IE 的事件對象來規(guī)范化事件對象。 */ e = e||window.event;/* 事件處理器通過保存在字符串 - methodName - 中的方法名調(diào)用了對象 - obj - 的一個方法。并傳遞已經(jīng)規(guī)范化的事件對象和觸發(fā)事件處理器的元素 的引用 - this - (之所以 this 有效是因為這個內(nèi)部函數(shù)是作為該元素的方法執(zhí)行的) */ return obj[methodName](e, this);}); }/* 這個構(gòu)造函數(shù)用于創(chuàng)建將自身與 DOM 元素關(guān)聯(lián)的對象, DOM 元素的 ID 作為構(gòu)造函數(shù)的字符串參數(shù)。 所創(chuàng)建的對象會在相應(yīng)的元素觸發(fā) onclick、 onmouseover 或 onmouseout 事件時, 調(diào)用相應(yīng)的方法。 */ function DhtmlObject(elementId){/* 調(diào)用一個返回 DOM 元素(如果沒找到返回 null)引用的函數(shù), 必需的參數(shù)是 ID。 將返回的值賦給局部變量 - el -。 */ var el = getElementWithId(elementId);/* - el - 值會在內(nèi)部通過類型轉(zhuǎn)換變?yōu)椴紶栔?#xff0c;以便 - if - 語句加以判斷。 因此,如果它引用一個對象結(jié)果將返回 true,如果是 null 則返回 false。 下面的代碼塊只有當 - el - 變量返回一個 DOM 元素時才會被執(zhí)行。 */if(el){/* 為給元素的事件處理器指定一個函數(shù),該對象調(diào)用了 - associateObjWithEvent - 函數(shù)。 同時對象將自身(通過 - this - 關(guān)鍵字)作為調(diào)用方法的對象, 并提供了調(diào)用的方法名稱。 - associateObjWithEvent - 函數(shù)會返回 一個內(nèi)部函數(shù),該內(nèi)部函數(shù)被指定為 DOM 元素的事件處理器。 在響應(yīng)事件時,執(zhí)行這個內(nèi)部函數(shù)就會調(diào)用必要的方法。 */el.onclick = associateObjWithEvent(this, "doOnClick");el.onmouseover = associateObjWithEvent(this, "doMouseOver");el.onmouseout = associateObjWithEvent(this, "doMouseOut");...} } DhtmlObject.prototype.doOnClick = function(event, element){... // doOnClick 方法體。. } DhtmlObject.prototype.doMouseOver = function(event, element){... // doMouseOver 方法體。 } DhtmlObject.prototype.doMouseOut = function(event, element){... // doMouseOut 方法體。 } 這樣,DhtmlObject 的任何實例都會將自身與相應(yīng)的 DOM 元素關(guān)聯(lián)起來,而這些 DOM 元素不必知道其他代碼如何操縱它們(即當觸發(fā)相應(yīng)事件時,會執(zhí)行什么代碼。譯者注),也不必理會全局命名空間的影響以及與 DhtmlObject 的其他實例間存在沖突的危險。例 3:包裝相關(guān)的功能 閉包可以用于創(chuàng)建額外的作用域,通過該作用域可以將相關(guān)的和具有依賴性的代碼組織起來,以便將意外交互的風險降到最低。假設(shè)有一個用于構(gòu)建字符串的函數(shù),為了避免重復(fù)性的連接操作(和創(chuàng)建眾多的中間字符串),我們的愿望是使用一個數(shù)組按順序來存儲字符串的各個部分,然后再使用 Array.prototype.join 方法(以空字符串作為其參數(shù))輸出結(jié)果。這個數(shù)組將作為輸出的緩沖器,但是將數(shù)組作為函數(shù)的局部變量又會導致在每次調(diào)用函數(shù)時都重新創(chuàng)建一個新數(shù)組,這在每次調(diào)用函數(shù)時只重新指定數(shù)組中的可變內(nèi)容的情況下并不是必要的。一種解決方案是將這個數(shù)組聲明為全局變量,這樣就可以重用這個數(shù)組,而不必每次都建立新數(shù)組。但這個方案的結(jié)果是,除了引用函數(shù)的全局變量會使用這個緩沖數(shù)組外,還會多出一個全局屬性引用數(shù)組自身。如此不僅使代碼變得不容易管理,而且,如果要在其他地方使用這個數(shù)組時,開發(fā)者必須要再次定義函數(shù)和數(shù)組。這樣一來,也使得代碼不容易與其他代碼整合,因為此時不僅要保證所使用的函數(shù)名在全局命名空間中是唯一的,而且還要保證函數(shù)所依賴的數(shù)組在全局命名空間中也必須是唯一的。而通過閉包可以使作為緩沖器的數(shù)組與依賴它的函數(shù)關(guān)聯(lián)起來(優(yōu)雅地打包),同時也能夠維持在全局命名空間外指定的緩沖數(shù)組的屬性名,免除了名稱沖突和意外交互的危險。其中的關(guān)鍵技巧在于通過執(zhí)行一個單行(in-line)函數(shù)表達式創(chuàng)建一個額外的執(zhí)行環(huán)境,而將該函數(shù)表達式返回的內(nèi)部函數(shù)作為在外部代碼中使用的函數(shù)。此時,緩沖數(shù)組被定義為函數(shù)表達式的一個局部變量。這個函數(shù)表達式只需執(zhí)行一次,而數(shù)組也只需創(chuàng)建一次,就可以供依賴它的函數(shù)重復(fù)使用。下面的代碼定義了一個函數(shù),這個函數(shù)用于返回一個 HTML 字符串,其中大部分內(nèi)容都是常量,但這些常量字符序列中需要穿插一些可變的信息,而可變的信息由調(diào)用函數(shù)時傳遞的參數(shù)提供。通過執(zhí)行單行函數(shù)表達式返回一個內(nèi)部函數(shù),并將返回的函數(shù)賦給一個全局變量,因此這個函數(shù)也可以稱為全局函數(shù)。而緩沖數(shù)組被定義為外部函數(shù)表達式的一個局部變量。它不會暴露在全局命名空間中,而且無論什么時候調(diào)用依賴它的函數(shù)都不需要重新創(chuàng)建這個數(shù)組。/* 聲明一個全局變量 - getImgInPositionedDivHtml - 并將一次調(diào)用一個外部函數(shù)表達式返回的內(nèi)部函數(shù)賦給它。這個內(nèi)部函數(shù)會返回一個用于表示絕對定位的 DIV 元素包圍著一個 IMG 元素 的 HTML 字符串,這樣一來,所有可變的屬性值都由調(diào)用該函數(shù)時的參數(shù)提供: */ var getImgInPositionedDivHtml = (function(){/* 外部函數(shù)表達式的局部變量 - buffAr - 保存著緩沖數(shù)組。這個數(shù)組只會被創(chuàng)建一次,生成的數(shù)組實例對內(nèi)部函數(shù)而言永遠是可用的因此,可供每次調(diào)用這個內(nèi)部函數(shù)時使用。其中的空字符串用作數(shù)據(jù)占位符,相應(yīng)的數(shù)據(jù)將由內(nèi)部函數(shù)插入到這個數(shù)組中:*/var buffAr = ['<div id="','', //index 1, DIV ID 屬性'" style="position:absolute;top:','', //index 3, DIV 頂部位置'px;left:','', //index 5, DIV 左端位置'px;width:','', //index 7, DIV 寬度'px;height:','', //index 9, DIV 高度'px;overflow:hidden;\"><img src=\"','', //index 11, IMG URL'\" width=\"','', //index 13, IMG 寬度'\" height=\"','', //index 15, IMG 調(diào)蓄'\" alt=\"','', //index 17, IMG alt 文本內(nèi)容'\"><\/div>'];/* 返回作為對函數(shù)表達式求值后結(jié)果的內(nèi)部函數(shù)對象。這個內(nèi)部函數(shù)就是每次調(diào)用執(zhí)行的函數(shù)- getImgInPositionedDivHtml( ... ) -*/return (function(url, id, width, height, top, left, altText){/* 將不同的參數(shù)插入到緩沖數(shù)組相應(yīng)的位置:*/buffAr[1] = id;buffAr[3] = top;buffAr[5] = left;buffAr[13] = (buffAr[7] = width);buffAr[15] = (buffAr[9] = height);buffAr[11] = url;buffAr[17] = altText;/* 返回通過使用空字符串(相當于將數(shù)組元素連接起來)連接數(shù)組每個元素后形成的字符串:*/return buffAr.join('');}); //:內(nèi)部函數(shù)表達式結(jié)束。 })(); /*^^- :單行外部函數(shù)表達式。*/ 如果一個函數(shù)依賴于另一(或多)個其他函數(shù),而其他函數(shù)又沒有必要被其他代碼直接調(diào)用,那么可以運用相同的技術(shù)來包裝這些函數(shù),而通過一個公開暴露的函數(shù)來調(diào)用它們。這樣,就將一個復(fù)雜的多函數(shù)處理過程封裝成了一個具有移植性的代碼單元。其他例子 有關(guān)閉包的一個可能是最廣為人知的應(yīng)用是 Douglas Crockford's technique for the emulation of private instance variables in ECMAScript objects。這種應(yīng)用方式可以擴展到各種嵌套包含的可訪問性(或可見性)的作用域結(jié)構(gòu),包括 the emulation of private static members for ECMAScript objects。閉包可能的用途是無限的,可能理解其工作原理才是把握如何使用它的最好指南。意外的閉包 在創(chuàng)建可訪問的內(nèi)部函數(shù)的函數(shù)體之外解析該內(nèi)部函數(shù)就會構(gòu)成閉包。這表明閉包很容易創(chuàng)建,但這樣一來可能會導致一種結(jié)果,即沒有認識到閉包是一種語言特性的 JavaScript 作者,會按照內(nèi)部函數(shù)能完成多種任務(wù)的想法來使用內(nèi)部函數(shù)。但他們對使用內(nèi)部函數(shù)的結(jié)果并不明了,而且根本意識不到創(chuàng)建了閉包,或者那樣做意味著什么。正如下一節(jié)談到 IE 中內(nèi)存泄漏問題時所提及的,意外創(chuàng)建的閉包可能導致嚴重的負面效應(yīng),而且也會影響到代碼的性能。問題不在于閉包本身,如果能夠真正做到謹慎地使用它們,反而會有助于創(chuàng)建高效的代碼。換句話說,使用內(nèi)部函數(shù)會影響到效率。使用內(nèi)部函數(shù)最常見的一種情況就是將其作為 DOM 元素的事件處理器。例如,下面的代碼用于向一個鏈接元素添加 onclick 事件處理器:/* 定義一個全局變量,通過下面的函數(shù)將它的值作為查詢字符串的一部分添加到鏈接的 - href - 中: */ var quantaty = 5; /* 當給這個函數(shù)傳遞一個鏈接(作為函數(shù)中的參數(shù) - linkRef -)時,會將一個 onclick 事件處理器指定給該鏈接,該事件處理器將全局變量 - quantaty - 的值作為字符串添加到鏈接的 - href - 屬性中,然后返回 true 使該鏈接在單擊后定位到由 - href - 屬性包含的查詢字符串指定的資源: */ function addGlobalQueryOnClick(linkRef){/* 如果可以將參數(shù) - linkRef - 通過類型轉(zhuǎn)換為 ture(說明它引用了一個對象):*/if(linkRef){/* 對一個函數(shù)表達式求值,并將對該函數(shù)對象的引用指定給這個鏈接元素的 onclick 事件處理器:*/linkRef.onclick = function(){/* 這個內(nèi)部函數(shù)表達式將查詢字符串添加到附加事件處理器的元素的 - href - 屬性中:*/this.href += ('?quantaty='+escape(quantaty));return true;};} } 無論什么時候調(diào)用 addGlobalQueryOnClick 函數(shù),都會創(chuàng)建一個新的內(nèi)部函數(shù)(通過賦值構(gòu)成了閉包)。從效率的角度上看,如果只是調(diào)用一兩次 addGlobalQueryOnClick 函數(shù)并沒有什么大的妨礙,但如果頻繁使用該函數(shù),就會導致創(chuàng)建許多截然不同的函數(shù)對象(每對內(nèi)部函數(shù)表達式求一次值,就會產(chǎn)生一個新的函數(shù)對象)。上面例子中的代碼沒有關(guān)注內(nèi)部函數(shù)在創(chuàng)建它的函數(shù)外部可以訪問(或者說構(gòu)成了閉包)這一事實。實際上,同樣的效果可以通過另一種方式來完成。即單獨地定義一個用于事件處理器的函數(shù),然后將該函數(shù)的引用指定給元素的事件處理屬性。這樣,只需創(chuàng)建一個函數(shù)對象,而所有使用相同事件處理器的元素都可以共享對這個函數(shù)的引用:/* 定義一個全局變量,通過下面的函數(shù)將它的值作為查詢字符串的一部分添加到鏈接的 - href - 中: */ var quantaty = 5;/* 當把一個鏈接(作為函數(shù)中的參數(shù) - linkRef -)傳遞給這個函數(shù)時,會給這個鏈接添加一個 onclick 事件處理器,該事件處理器會將全局變量 - quantaty - 的值作為查詢字符串的一部分添加到鏈接的 - href - 中,然后返回 true,以便單擊鏈接時定位到由作為 - href - 屬性值的查詢字符串所指定的資源: */ function addGlobalQueryOnClick(linkRef){/* 如果 - linkRef - 參數(shù)能夠通過類型轉(zhuǎn)換為 true(說明它引用了一個對象):*/if(linkRef){/* 將一個對全局函數(shù)的引用指定給這個鏈接的事件處理屬性,使函數(shù)成為鏈接元素的事件處理器:*/linkRef.onclick = forAddQueryOnClick;} } /* 聲明一個全局函數(shù),作為鏈接元素的事件處理器,這個函數(shù)將一個全局變量的值作為要添加事件處理器的鏈接元素的 - href - 值的一部分: */ function forAddQueryOnClick(){this.href += ('?quantaty='+escape(quantaty));return true; } 在上面例子的第一個版本中,內(nèi)部函數(shù)并沒有作為閉包發(fā)揮應(yīng)有的作用。在那種情況下,反而是不使用閉包更有效率,因為不用重復(fù)創(chuàng)建許多本質(zhì)上相同的函數(shù)對象。類似地考量同樣適用于對象的構(gòu)造函數(shù)。與下面代碼中的構(gòu)造函數(shù)框架類似的代碼并不罕見:function ExampleConst(param){/* 通過對函數(shù)表達式求值創(chuàng)建對象的方法,并將求值所得的函數(shù)對象的引用賦給要創(chuàng)建對象的屬性:*/this.method1 = function(){... // 方法體。};this.method2 = function(){... // 方法體。};this.method3 = function(){... // 方法體。};/* 把構(gòu)造函數(shù)的參數(shù)賦給對象的一個屬性:*/this.publicProp = param; } 每當通過 new ExampleConst(n) 使用這個構(gòu)造函數(shù)創(chuàng)建一個對象時,都會創(chuàng)建一組新的、作為對象方法的函數(shù)對象。因此,創(chuàng)建的對象實例越多,相應(yīng)的函數(shù)對象也就越多。Douglas Crockford 提出的模仿 JavaScript 對象私有成員的技術(shù),就利用了將對內(nèi)部函數(shù)的引用指定給在構(gòu)造函數(shù)中構(gòu)造對象的公共屬性而形成的閉包。如果對象的方法沒有利用在構(gòu)造函數(shù)中形成的閉包,那么在實例化每個對象時創(chuàng)建的多個函數(shù)對象,會使實例化過程變慢,而且將有更多的資源被占用,以滿足創(chuàng)建更多函數(shù)對象的需要。這那種情況下,只創(chuàng)建一次函數(shù)對象,并把它們指定給構(gòu)造函數(shù) prototype 的相應(yīng)屬性顯然更有效率。這樣一來,它們就能被構(gòu)造函數(shù)創(chuàng)建的所有對象共享了:function ExampleConst(param){/* 將構(gòu)造函數(shù)的參數(shù)賦給對象的一個屬性:*/this.publicProp = param; } /* 通過對函數(shù)表達式求值,并將結(jié)果函數(shù)對象的引用指定給構(gòu)造函數(shù)原型的相應(yīng)屬性來創(chuàng)建對象的方法: */ ExampleConst.prototype.method1 = function(){... // 方法體。 }; ExampleConst.prototype.method2 = function(){... // 方法體。 }; ExampleConst.prototype.method3 = function(){... // 方法體。 };Internet Explorer 的內(nèi)存泄漏問題 Internet Explorer Web 瀏覽器(在 IE 4 到 IE 6 中核實)的垃圾收集系統(tǒng)中存在一個問題,即如果 ECMAScript 和某些宿主對象構(gòu)成了 "循環(huán)引用",那么這些對象將不會被當作垃圾收集。此時所謂的宿主對象指的是任何 DOM 節(jié)點(包括 document 對象及其后代元素)和 ActiveX 對象。如果在一個循環(huán)引用中包含了一或多個這樣的對象,那么這些對象直到瀏覽器關(guān)閉都不會被釋放,而它們所占用的內(nèi)存同樣在瀏覽器關(guān)閉之前都不會交回系統(tǒng)重用。當兩個或多個對象以首尾相連的方式相互引用時,就構(gòu)成了循環(huán)引用。比如對象 1 的一個屬性引用了對象 2 ,對象 2 的一個屬性引用了對象 3,而對象 3 的一個屬性又引用了對象 1。對于純粹的 ECMAScript 對象而言,只要沒有其他對象引用對象 1、2、3,也就是說它們只是相互之間的引用,那么仍然會被垃圾收集系統(tǒng)識別并處理。但是,在 Internet Explorer 中,如果循環(huán)引用中的任何對象是 DOM 節(jié)點或者 ActiveX 對象,垃圾收集系統(tǒng)則不會發(fā)現(xiàn)它們之間的循環(huán)關(guān)系與系統(tǒng)中的其他對象是隔離的并釋放它們。最終它們將被保留在內(nèi)存中,直到瀏覽器關(guān)閉。閉包非常容易構(gòu)成循環(huán)引用。如果一個構(gòu)成閉包的函數(shù)對象被指定給,比如一個 DOM 節(jié)點的事件處理器,而對該節(jié)點的引用又被指定給函數(shù)對象作用域中的一個活動(或可變)對象,那么就存在一個循環(huán)引用。DOM_Node.onevent ->function_object.[[scope]] ->scope_chain ->Activation_object.nodeRef ->DOM_Node。形成這樣一個循環(huán)引用是輕而易舉的,而且稍微瀏覽一下包含類似循環(huán)引用代碼的網(wǎng)站(通常會出現(xiàn)在網(wǎng)站的每個頁面中),就會消耗大量(甚至全部)系統(tǒng)內(nèi)存。多加注意可以避免形成循環(huán)引用,而在無法避免時,也可以使用補償?shù)姆椒?#xff0c;比如使用 IE 的 onunload 事件來來清空(null)事件處理函數(shù)的引用。時刻意識到這個問題并理解閉包的工作機制是在 IE 中避免此類問題的關(guān)鍵。comp.lang.javascript FAQ notes T.O.C.撰稿 Richard Cornford,2004 年 3 月 修改建議來自:

轉(zhuǎn)載于:https://www.cnblogs.com/oneroom/archive/2010/11/20/closure.html

總結(jié)

以上是生活随笔為你收集整理的理解 JavaScript 闭包的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

国产精品.xx视频.xxtv | 久久婷婷五月综合色国产香蕉 | 国产精品国产自线拍免费软件 | 六月丁香婷婷色狠狠久久 | 日本一区二区更新不卡 | 国产97在线 | 亚洲 | 中文字幕人妻无码一夲道 | 女人和拘做爰正片视频 | 影音先锋中文字幕无码 | 久久亚洲精品成人无码 | 亚洲精品一区二区三区婷婷月 | 亚洲精品无码人妻无码 | 成人性做爰aaa片免费看不忠 | 小鲜肉自慰网站xnxx | 亚洲日本va中文字幕 | 欧美国产日韩久久mv | 大色综合色综合网站 | 中文字幕无线码 | 国产无遮挡又黄又爽免费视频 | 久久精品无码一区二区三区 | 人人妻人人澡人人爽欧美一区 | 天堂无码人妻精品一区二区三区 | 成人av无码一区二区三区 | 久久成人a毛片免费观看网站 | 亚洲一区二区三区国产精华液 | 无码任你躁久久久久久久 | 久久国产精品偷任你爽任你 | 亚洲狠狠色丁香婷婷综合 | 无码播放一区二区三区 | 久久精品国产一区二区三区肥胖 | 又大又紧又粉嫩18p少妇 | 最近免费中文字幕中文高清百度 | 国产精品美女久久久久av爽李琼 | 精品一区二区三区无码免费视频 | 偷窥日本少妇撒尿chinese | 午夜精品久久久内射近拍高清 | 国产真实伦对白全集 | 成人亚洲精品久久久久软件 | 国产精品内射视频免费 | 中文字幕人成乱码熟女app | 精品无码av一区二区三区 | 国产内射老熟女aaaa | 成人欧美一区二区三区黑人 | 国产精品人妻一区二区三区四 | 无码国产色欲xxxxx视频 | 国产av一区二区精品久久凹凸 | 亚洲中文字幕无码一久久区 | 国产精品成人av在线观看 | 在线精品亚洲一区二区 | 一本加勒比波多野结衣 | 国产精品久免费的黄网站 | 国产成人无码av一区二区 | 亚洲gv猛男gv无码男同 | 又粗又大又硬又长又爽 | 久久久久99精品成人片 | yw尤物av无码国产在线观看 | 久久久久av无码免费网 | 国产成人无码区免费内射一片色欲 | 国产成人无码区免费内射一片色欲 | 少妇被黑人到高潮喷出白浆 | 午夜精品一区二区三区的区别 | 亚洲自偷自拍另类第1页 | 成人亚洲精品久久久久软件 | 香港三级日本三级妇三级 | 日本一区二区三区免费播放 | 狠狠亚洲超碰狼人久久 | 黑人巨大精品欧美一区二区 | 狠狠色丁香久久婷婷综合五月 | 欧美兽交xxxx×视频 | 奇米影视888欧美在线观看 | 中文字幕无码免费久久9一区9 | www国产亚洲精品久久网站 | 无码人妻出轨黑人中文字幕 | 图片区 小说区 区 亚洲五月 | 狠狠躁日日躁夜夜躁2020 | 国产在线精品一区二区高清不卡 | 久久国产精品精品国产色婷婷 | 色综合久久88色综合天天 | 丰腴饱满的极品熟妇 | 一区二区三区高清视频一 | 国产精品a成v人在线播放 | 国产精品久久久久久亚洲影视内衣 | 久久精品人人做人人综合 | 亚洲精品一区三区三区在线观看 | 欧美日本免费一区二区三区 | 亚洲中文字幕乱码av波多ji | 久久午夜无码鲁丝片 | www一区二区www免费 | 久久精品人人做人人综合 | 久久99精品久久久久久动态图 | 无码人妻丰满熟妇区五十路百度 | 人妻少妇被猛烈进入中文字幕 | 久久99久久99精品中文字幕 | 曰本女人与公拘交酡免费视频 | 欧美成人家庭影院 | 无码人中文字幕 | 亚洲综合另类小说色区 | 亚洲精品久久久久中文第一幕 | 成人毛片一区二区 | 老熟妇仑乱视频一区二区 | 日本熟妇浓毛 | 激情爆乳一区二区三区 | 亚洲中文字幕无码中文字在线 | 亚洲の无码国产の无码步美 | 午夜嘿嘿嘿影院 | 麻豆国产丝袜白领秘书在线观看 | 国产成人无码一二三区视频 | 国产精品va在线观看无码 | 国产极品视觉盛宴 | 国产乱码精品一品二品 | 荡女精品导航 | 久久久久av无码免费网 | av小次郎收藏 | 丰满人妻被黑人猛烈进入 | 国产精品视频免费播放 | 日本一区二区三区免费高清 | 成人aaa片一区国产精品 | av香港经典三级级 在线 | 日欧一片内射va在线影院 | 亚洲熟妇色xxxxx欧美老妇 | 99久久精品国产一区二区蜜芽 | 在线精品国产一区二区三区 | 2020最新国产自产精品 | 狠狠躁日日躁夜夜躁2020 | 亚洲中文字幕va福利 | 国产乡下妇女做爰 | 精品亚洲成av人在线观看 | 综合人妻久久一区二区精品 | 日本一卡二卡不卡视频查询 | 人人爽人人澡人人高潮 | 亚洲一区二区三区四区 | 精品久久久久久人妻无码中文字幕 | 国产人成高清在线视频99最全资源 | 在线观看国产午夜福利片 | 狠狠色噜噜狠狠狠7777奇米 | 久9re热视频这里只有精品 | 精品国产一区二区三区av 性色 | 亚洲日韩一区二区三区 | 99国产欧美久久久精品 | 日本熟妇人妻xxxxx人hd | 大肉大捧一进一出好爽视频 | 夜夜夜高潮夜夜爽夜夜爰爰 | 国产成人精品视频ⅴa片软件竹菊 | 无码av免费一区二区三区试看 | 欧美性色19p | 精品无码成人片一区二区98 | 在线观看国产午夜福利片 | 中文精品无码中文字幕无码专区 | 99在线 | 亚洲 | 全黄性性激高免费视频 | 国产亚洲精品久久久久久大师 | 国产人妻人伦精品1国产丝袜 | 欧美freesex黑人又粗又大 | 日本欧美一区二区三区乱码 | 亚洲欧洲日本综合aⅴ在线 | 国产亚洲人成在线播放 | 麻豆成人精品国产免费 | 亚洲日本va午夜在线电影 | 日本爽爽爽爽爽爽在线观看免 | 天天摸天天碰天天添 | 麻豆国产人妻欲求不满 | 给我免费的视频在线观看 | 国产精品久久久久影院嫩草 | 国产精品无码一区二区三区不卡 | 日日躁夜夜躁狠狠躁 | 精品国产国产综合精品 | 日日摸日日碰夜夜爽av | 十八禁真人啪啪免费网站 | 天堂а√在线中文在线 | 狠狠cao日日穞夜夜穞av | 国产乱子伦视频在线播放 | 久久久久久av无码免费看大片 | 日本又色又爽又黄的a片18禁 | 天天爽夜夜爽夜夜爽 | 大胆欧美熟妇xx | 欧美丰满熟妇xxxx | 久久久无码中文字幕久... | 国产av无码专区亚洲a∨毛片 | 天天做天天爱天天爽综合网 | 亚洲va中文字幕无码久久不卡 | 午夜福利一区二区三区在线观看 | 亚洲国产高清在线观看视频 | 国产熟妇高潮叫床视频播放 | 伊人久久婷婷五月综合97色 | 欧美性黑人极品hd | 国产成人精品无码播放 | 色诱久久久久综合网ywww | 国产欧美精品一区二区三区 | 扒开双腿吃奶呻吟做受视频 | 国产精品丝袜黑色高跟鞋 | 无码人妻丰满熟妇区毛片18 | 婷婷五月综合缴情在线视频 | 成 人 网 站国产免费观看 | 帮老师解开蕾丝奶罩吸乳网站 | 无码人妻黑人中文字幕 | 思思久久99热只有频精品66 | 亚洲自偷精品视频自拍 | 夜夜夜高潮夜夜爽夜夜爰爰 | 97精品国产97久久久久久免费 | 国产高清不卡无码视频 | 亚洲精品无码人妻无码 | 对白脏话肉麻粗话av | 少妇久久久久久人妻无码 | 台湾无码一区二区 | 国产va免费精品观看 | 国产sm调教视频在线观看 | 欧美日本日韩 | 波多野结衣一区二区三区av免费 | 亚洲精品午夜国产va久久成人 | 一本久久伊人热热精品中文字幕 | 亚洲欧美日韩国产精品一区二区 | 亚洲中文字幕无码一久久区 | 国产美女极度色诱视频www | 老熟女重囗味hdxx69 | 51国偷自产一区二区三区 | 亚洲欧美色中文字幕在线 | 99国产精品白浆在线观看免费 | 老熟妇仑乱视频一区二区 | 亚洲成熟女人毛毛耸耸多 | 西西人体www44rt大胆高清 | 日韩 欧美 动漫 国产 制服 | 亚洲欧美中文字幕5发布 | 中文字幕久久久久人妻 | 国产 精品 自在自线 | 色五月五月丁香亚洲综合网 | 98国产精品综合一区二区三区 | 国产成人无码av一区二区 | 帮老师解开蕾丝奶罩吸乳网站 | 久久精品女人的天堂av | 国产成人无码av一区二区 | 人妻人人添人妻人人爱 | 无码人妻丰满熟妇区毛片18 | 亚洲中文字幕无码一久久区 | 内射巨臀欧美在线视频 | 亚洲精品无码国产 | 中文字幕无码免费久久9一区9 | 欧美性生交活xxxxxdddd | 亚洲精品一区二区三区婷婷月 | 四虎永久在线精品免费网址 | 性色欲网站人妻丰满中文久久不卡 | 国产精品久久久av久久久 | 日本大乳高潮视频在线观看 | 天天av天天av天天透 | 天堂亚洲2017在线观看 | 日本大乳高潮视频在线观看 | 国产肉丝袜在线观看 | 亚洲欧美综合区丁香五月小说 | 亚洲国产精品无码一区二区三区 | 亚洲阿v天堂在线 | 性欧美videos高清精品 | 久久久久久久久888 | 51国偷自产一区二区三区 | 人妻少妇精品无码专区动漫 | 亚洲精品综合五月久久小说 | 国产无遮挡又黄又爽免费视频 | 男人扒开女人内裤强吻桶进去 | 久久久国产精品无码免费专区 | 久久午夜无码鲁丝片午夜精品 | 嫩b人妻精品一区二区三区 | 国产精品美女久久久网av | 亚洲精品久久久久avwww潮水 | 最新国产乱人伦偷精品免费网站 | 久久久久亚洲精品中文字幕 | 成人试看120秒体验区 | 久久97精品久久久久久久不卡 | 欧美丰满少妇xxxx性 | 任你躁在线精品免费 | 国产精品久久久av久久久 | 日日天干夜夜狠狠爱 | 精品久久8x国产免费观看 | 色综合久久久久综合一本到桃花网 | 久久精品国产99久久6动漫 | 18精品久久久无码午夜福利 | 亚洲 激情 小说 另类 欧美 | 日本一区二区更新不卡 | 午夜男女很黄的视频 | 久久久中文久久久无码 | 久久久久久久女国产乱让韩 | 欧美精品国产综合久久 | 国内精品一区二区三区不卡 | 天干天干啦夜天干天2017 | 一本无码人妻在中文字幕免费 | 国产精品久久国产精品99 | 国产精品毛片一区二区 | 久久无码专区国产精品s | a在线亚洲男人的天堂 | 欧美国产日韩久久mv | 中文字幕色婷婷在线视频 | 色综合久久网 | 性色欲情网站iwww九文堂 | 亲嘴扒胸摸屁股激烈网站 | 国产精品久久久一区二区三区 | 又大又黄又粗又爽的免费视频 | 国产精华av午夜在线观看 | 人妻少妇精品无码专区动漫 | 久久国产36精品色熟妇 | 久激情内射婷内射蜜桃人妖 | 亚洲欧美中文字幕5发布 | 久久综合给合久久狠狠狠97色 | 日日夜夜撸啊撸 | a片免费视频在线观看 | 2019午夜福利不卡片在线 | 亚洲精品久久久久久一区二区 | 中文字幕无码日韩专区 | 少妇愉情理伦片bd | 日本熟妇大屁股人妻 | 欧美刺激性大交 | 撕开奶罩揉吮奶头视频 | 欧美激情内射喷水高潮 | 欧洲美熟女乱又伦 | 成在人线av无码免观看麻豆 | 日韩精品乱码av一区二区 | 性啪啪chinese东北女人 | 亚洲色欲久久久综合网东京热 | 亚洲高清偷拍一区二区三区 | 99久久亚洲精品无码毛片 | 国语精品一区二区三区 | 日日摸天天摸爽爽狠狠97 | а√资源新版在线天堂 | 麻豆国产人妻欲求不满 | av无码电影一区二区三区 | 亚洲精品中文字幕乱码 | 国产精品福利视频导航 | 国产免费无码一区二区视频 | 免费看男女做好爽好硬视频 | 欧洲美熟女乱又伦 | www国产亚洲精品久久网站 | 亚洲最大成人网站 | 天堂亚洲免费视频 | 亚洲精品综合五月久久小说 | a在线观看免费网站大全 | 少妇被粗大的猛进出69影院 | 久久精品国产精品国产精品污 | 高清不卡一区二区三区 | 久久人人爽人人爽人人片av高清 | 久久无码人妻影院 | 国产乱子伦视频在线播放 | 国产成人无码av在线影院 | 久久成人a毛片免费观看网站 | 四虎国产精品免费久久 | 久久综合激激的五月天 | 好爽又高潮了毛片免费下载 | 激情人妻另类人妻伦 | 人妻少妇精品视频专区 | av无码不卡在线观看免费 | 中文无码精品a∨在线观看不卡 | 激情内射亚州一区二区三区爱妻 | 日韩人妻少妇一区二区三区 | 自拍偷自拍亚洲精品被多人伦好爽 | 无码毛片视频一区二区本码 | 日韩 欧美 动漫 国产 制服 | 中文字幕无码人妻少妇免费 | 奇米影视7777久久精品人人爽 | 成年美女黄网站色大免费视频 | 四虎4hu永久免费 | 99精品视频在线观看免费 | 久久综合九色综合97网 | 欧美精品免费观看二区 | 5858s亚洲色大成网站www | 日欧一片内射va在线影院 | 欧美成人家庭影院 | yw尤物av无码国产在线观看 | 国产suv精品一区二区五 | 好屌草这里只有精品 | 亚洲中文无码av永久不收费 | 少妇高潮一区二区三区99 | 国产黄在线观看免费观看不卡 | 成人一在线视频日韩国产 | 乱人伦中文视频在线观看 | 天天做天天爱天天爽综合网 | 亚洲中文字幕在线观看 | 性生交大片免费看女人按摩摩 | 白嫩日本少妇做爰 | 亚洲精品国产精品乱码视色 | 一本大道伊人av久久综合 | 牛和人交xxxx欧美 | 国产精品毛片一区二区 | www一区二区www免费 | 亚洲娇小与黑人巨大交 | 在线观看欧美一区二区三区 | 国产性生大片免费观看性 | 伊人久久大香线蕉亚洲 | 亚洲色www成人永久网址 | 麻豆国产97在线 | 欧洲 | 无套内谢的新婚少妇国语播放 | 亚洲精品国产品国语在线观看 | 久久午夜无码鲁丝片 | 亚洲精品美女久久久久久久 | 亚洲欧美日韩成人高清在线一区 | 夜精品a片一区二区三区无码白浆 | 色老头在线一区二区三区 | 亚洲欧美国产精品久久 | 成人亚洲精品久久久久软件 | 久激情内射婷内射蜜桃人妖 | 九一九色国产 | 中文字幕久久久久人妻 | 女人高潮内射99精品 | 无码av岛国片在线播放 | 夜先锋av资源网站 | 日本丰满熟妇videos | 久久午夜无码鲁丝片午夜精品 | 国产97人人超碰caoprom | 欧美人与禽zoz0性伦交 | 国产精品福利视频导航 | 日韩人妻无码一区二区三区久久99 | 伊人久久大香线蕉午夜 | 国产av无码专区亚洲a∨毛片 | 欧美日韩一区二区免费视频 | 青青青爽视频在线观看 | 麻豆国产丝袜白领秘书在线观看 | 成人片黄网站色大片免费观看 | 久久国产36精品色熟妇 | 在线看片无码永久免费视频 | 欧美乱妇无乱码大黄a片 | 成人亚洲精品久久久久软件 | 国产精品亚洲一区二区三区喷水 | 亚洲一区二区三区在线观看网站 | 欧洲极品少妇 | 亚洲国产欧美日韩精品一区二区三区 | 欧美午夜特黄aaaaaa片 | 亚洲国产成人av在线观看 | 精品人人妻人人澡人人爽人人 | 久久精品国产精品国产精品污 | 日韩欧美中文字幕公布 | 国产猛烈高潮尖叫视频免费 | 一本久久a久久精品亚洲 | 午夜时刻免费入口 | 国产性生交xxxxx无码 | 久久这里只有精品视频9 | 三上悠亚人妻中文字幕在线 | 精品国产青草久久久久福利 | 性欧美videos高清精品 | 日本饥渴人妻欲求不满 | 久久亚洲中文字幕无码 | 日本大香伊一区二区三区 | 久久久中文字幕日本无吗 | 亚洲精品久久久久久一区二区 | 色欲人妻aaaaaaa无码 | 少妇人妻大乳在线视频 | 国产片av国语在线观看 | 国产精品亚洲综合色区韩国 | 性史性农村dvd毛片 | 中文字幕av伊人av无码av | 国产色在线 | 国产 | 国产两女互慰高潮视频在线观看 | 国产亚洲人成a在线v网站 | 午夜无码区在线观看 | 男人扒开女人内裤强吻桶进去 | 久久99精品久久久久婷婷 | 亚洲国产精品毛片av不卡在线 | 亚洲中文字幕久久无码 | 欧美日韩综合一区二区三区 | 日本熟妇乱子伦xxxx | 亚洲成a人一区二区三区 | 日日天干夜夜狠狠爱 | 亚洲欧美国产精品专区久久 | 中文字幕 人妻熟女 | 国产精品香蕉在线观看 | 国产熟女一区二区三区四区五区 | 亚洲中文字幕久久无码 | 中文字幕乱码中文乱码51精品 | 国产乱人偷精品人妻a片 | 国产真实伦对白全集 | 国产精品va在线观看无码 | 国产精品视频免费播放 | 精品人妻人人做人人爽夜夜爽 | 亚洲欧洲无卡二区视頻 | 国产精品人人妻人人爽 | 亚洲国产精品一区二区美利坚 | 欧美激情综合亚洲一二区 | 草草网站影院白丝内射 | 中文字幕亚洲情99在线 | 国产精品怡红院永久免费 | 午夜精品久久久内射近拍高清 | 国产成人精品视频ⅴa片软件竹菊 | 亚洲日韩乱码中文无码蜜桃臀网站 | 国产精品久久精品三级 | 欧美freesex黑人又粗又大 | 久久精品视频在线看15 | 最新国产麻豆aⅴ精品无码 | 图片小说视频一区二区 | av无码不卡在线观看免费 | 亚洲中文字幕久久无码 | av无码不卡在线观看免费 | 色综合久久88色综合天天 | 色婷婷综合中文久久一本 | 亚洲经典千人经典日产 | 亚洲精品久久久久avwww潮水 | 高清不卡一区二区三区 | 性欧美疯狂xxxxbbbb | 精品人妻中文字幕有码在线 | 永久免费观看国产裸体美女 | 国产精品无码成人午夜电影 | 国产av一区二区三区最新精品 | 国精产品一品二品国精品69xx | 国产成人无码区免费内射一片色欲 | 精品乱子伦一区二区三区 | 亚洲 日韩 欧美 成人 在线观看 | 欧美人妻一区二区三区 | 欧美35页视频在线观看 | 久在线观看福利视频 | 国产成人人人97超碰超爽8 | 性色欲网站人妻丰满中文久久不卡 | 国产精品久久久久久久9999 | 欧美大屁股xxxxhd黑色 | 国产真人无遮挡作爱免费视频 | 国产成人无码a区在线观看视频app | 久久无码中文字幕免费影院蜜桃 | 欧美人妻一区二区三区 | 77777熟女视频在线观看 а天堂中文在线官网 | 久久人人爽人人爽人人片ⅴ | 在线欧美精品一区二区三区 | 欧洲精品码一区二区三区免费看 | 久久亚洲精品中文字幕无男同 | 中文字幕乱码中文乱码51精品 | 久精品国产欧美亚洲色aⅴ大片 | 对白脏话肉麻粗话av | 亚洲a无码综合a国产av中文 | 一本久道高清无码视频 | 俺去俺来也www色官网 | 亚洲精品中文字幕久久久久 | 久久人人97超碰a片精品 | 人妻体内射精一区二区三四 | 国产绳艺sm调教室论坛 | 国产网红无码精品视频 | 亚洲日本一区二区三区在线 | 成人动漫在线观看 | 国产网红无码精品视频 | 欧美日韩一区二区三区自拍 | 国产精品免费大片 | 亚洲狠狠色丁香婷婷综合 | 中文字幕日韩精品一区二区三区 | 国产精品美女久久久网av | 蜜桃视频插满18在线观看 | 女人和拘做爰正片视频 | 亚洲综合伊人久久大杳蕉 | 国产精品人人妻人人爽 | 久久久久久a亚洲欧洲av冫 | 精品国产乱码久久久久乱码 | 人妻无码αv中文字幕久久琪琪布 | 欧美精品一区二区精品久久 | 日本饥渴人妻欲求不满 | 强开小婷嫩苞又嫩又紧视频 | 免费中文字幕日韩欧美 | 日韩人妻无码一区二区三区久久99 | 纯爱无遮挡h肉动漫在线播放 | 亚洲小说春色综合另类 | 久久久中文字幕日本无吗 | 无码人妻少妇伦在线电影 | 日韩av无码中文无码电影 | 色综合天天综合狠狠爱 | 亚洲成a人片在线观看无码 | 丰满护士巨好爽好大乳 | 大肉大捧一进一出视频出来呀 | 国精品人妻无码一区二区三区蜜柚 | 欧洲欧美人成视频在线 | 波多野结衣一区二区三区av免费 | 国产成人无码a区在线观看视频app | 九九久久精品国产免费看小说 | 国产农村乱对白刺激视频 | 久久精品99久久香蕉国产色戒 | 荫蒂添的好舒服视频囗交 | 国产极品美女高潮无套在线观看 | 影音先锋中文字幕无码 | 99久久亚洲精品无码毛片 | 夜精品a片一区二区三区无码白浆 | 精品国产一区二区三区四区 | 久9re热视频这里只有精品 | 欧美成人午夜精品久久久 | 丰满护士巨好爽好大乳 | 无码人妻丰满熟妇区五十路百度 | 精品国产精品久久一区免费式 | 国精产品一区二区三区 | 日日摸夜夜摸狠狠摸婷婷 | 国产精品无码一区二区桃花视频 | 久久视频在线观看精品 | 精品久久久无码中文字幕 | 日韩精品一区二区av在线 | 正在播放东北夫妻内射 | 熟妇人妻无码xxx视频 | 亚洲狠狠色丁香婷婷综合 | 男女性色大片免费网站 | 又紧又大又爽精品一区二区 | 日韩av无码一区二区三区不卡 | 日本va欧美va欧美va精品 | 又黄又爽又色的视频 | 亚洲熟悉妇女xxx妇女av | 在线а√天堂中文官网 | 精品成在人线av无码免费看 | 97久久超碰中文字幕 | 国产精品国产三级国产专播 | 欧美怡红院免费全部视频 | 99久久精品无码一区二区毛片 | 久久久无码中文字幕久... | 欧美刺激性大交 | 欧美日韩亚洲国产精品 | 领导边摸边吃奶边做爽在线观看 | 男女爱爱好爽视频免费看 | 爱做久久久久久 | 亚洲综合无码久久精品综合 | 久久久久成人精品免费播放动漫 | 亚洲国产精品无码一区二区三区 | 天干天干啦夜天干天2017 | 亚洲综合伊人久久大杳蕉 | 又色又爽又黄的美女裸体网站 | 色狠狠av一区二区三区 | 麻豆蜜桃av蜜臀av色欲av | 亚洲经典千人经典日产 | 亚洲午夜久久久影院 | 又大又紧又粉嫩18p少妇 | 欧美日韩一区二区免费视频 | 网友自拍区视频精品 | 色一情一乱一伦一区二区三欧美 | 麻豆人妻少妇精品无码专区 | 一本大道久久东京热无码av | 国产69精品久久久久app下载 | 日日橹狠狠爱欧美视频 | 无遮挡国产高潮视频免费观看 | 青青久在线视频免费观看 | 狠狠躁日日躁夜夜躁2020 | 国产偷自视频区视频 | 六月丁香婷婷色狠狠久久 | 色婷婷综合激情综在线播放 | 欧美成人免费全部网站 | 伊人久久大香线蕉av一区二区 | 国产97人人超碰caoprom | 水蜜桃亚洲一二三四在线 | 欧美性黑人极品hd | 久久成人a毛片免费观看网站 | 国产午夜福利100集发布 | 精品国产麻豆免费人成网站 | 欧美日韩综合一区二区三区 | 亚洲s码欧洲m码国产av | 亚洲国产欧美日韩精品一区二区三区 | 日本乱人伦片中文三区 | 熟妇激情内射com | 国产熟妇高潮叫床视频播放 | 鲁鲁鲁爽爽爽在线视频观看 | 国产一区二区不卡老阿姨 | 国产成人无码av在线影院 | 成人性做爰aaa片免费看 | 久久zyz资源站无码中文动漫 | 午夜精品一区二区三区在线观看 | 精品人人妻人人澡人人爽人人 | 曰本女人与公拘交酡免费视频 | 国产人妖乱国产精品人妖 | 欧美国产日韩久久mv | 永久免费观看国产裸体美女 | 人妻人人添人妻人人爱 | 成在人线av无码免观看麻豆 | 国产精品手机免费 | 熟妇人妻激情偷爽文 | 无码人妻av免费一区二区三区 | 亚洲精品国偷拍自产在线麻豆 | 亚洲小说春色综合另类 | 国产精品无码一区二区三区不卡 | 桃花色综合影院 | 亚洲熟熟妇xxxx | 国产精品嫩草久久久久 | 人人妻人人澡人人爽精品欧美 | 精品熟女少妇av免费观看 | 日韩在线不卡免费视频一区 | 国产成人精品优优av | 精品无码一区二区三区的天堂 | 2019nv天堂香蕉在线观看 | 亚洲a无码综合a国产av中文 | 丰满护士巨好爽好大乳 | a在线亚洲男人的天堂 | 国产av一区二区精品久久凹凸 | 爽爽影院免费观看 | 国产农村妇女高潮大叫 | 亚洲熟女一区二区三区 | 精品国产一区二区三区av 性色 | 亚洲国产欧美日韩精品一区二区三区 | 国产精品香蕉在线观看 | 中文字幕av无码一区二区三区电影 | 国产精品怡红院永久免费 | 成人精品一区二区三区中文字幕 | 亚洲熟妇色xxxxx欧美老妇y | 乱码av麻豆丝袜熟女系列 | 99久久精品日本一区二区免费 | 激情五月综合色婷婷一区二区 | 131美女爱做视频 | 特大黑人娇小亚洲女 | 最新版天堂资源中文官网 | 思思久久99热只有频精品66 | 色一情一乱一伦一区二区三欧美 | 欧美丰满少妇xxxx性 | 无码午夜成人1000部免费视频 | 国产真实乱对白精彩久久 | 国产精品怡红院永久免费 | 樱花草在线社区www | 亚洲熟悉妇女xxx妇女av | 欧美国产日韩亚洲中文 | 狂野欧美性猛xxxx乱大交 | 理论片87福利理论电影 | 欧美 丝袜 自拍 制服 另类 | 麻豆国产人妻欲求不满 | 亚洲成色在线综合网站 | 精品一区二区不卡无码av | 国产激情无码一区二区app | 欧洲精品码一区二区三区免费看 | 色婷婷久久一区二区三区麻豆 | 国产精品a成v人在线播放 | 亚洲区欧美区综合区自拍区 | 国产熟女一区二区三区四区五区 | 久久久久久国产精品无码下载 | 亚洲日韩av片在线观看 | 精品欧洲av无码一区二区三区 | 人妻插b视频一区二区三区 | 成人精品视频一区二区 | 国产成人综合美国十次 | a片在线免费观看 | 亚洲精品无码人妻无码 | 国产人成高清在线视频99最全资源 | 一本加勒比波多野结衣 | 免费看男女做好爽好硬视频 | 一个人看的视频www在线 | 少妇愉情理伦片bd | 久久精品国产亚洲精品 | 亚洲午夜久久久影院 | 丰满人妻一区二区三区免费视频 | 麻豆国产人妻欲求不满 | 亚洲中文字幕va福利 | 国内精品九九久久久精品 | 男人和女人高潮免费网站 | 日日麻批免费40分钟无码 | 最新国产麻豆aⅴ精品无码 | 国产人妻精品一区二区三区不卡 | 国产成人久久精品流白浆 | 玩弄少妇高潮ⅹxxxyw | 无码任你躁久久久久久久 | 国产欧美精品一区二区三区 | 性欧美牲交xxxxx视频 | 成在人线av无码免观看麻豆 | 国产农村妇女aaaaa视频 撕开奶罩揉吮奶头视频 | 国产成人精品无码播放 | 精品国产青草久久久久福利 | 樱花草在线播放免费中文 | 国产精品无码永久免费888 | 亚洲色偷偷偷综合网 | 无码国产色欲xxxxx视频 | 亚洲一区二区三区在线观看网站 | 亚洲精品中文字幕久久久久 | 无套内谢的新婚少妇国语播放 | 欧美肥老太牲交大战 | 日本一区二区三区免费播放 | 理论片87福利理论电影 | 色综合天天综合狠狠爱 | 色偷偷人人澡人人爽人人模 | 无码帝国www无码专区色综合 | 亚洲中文无码av永久不收费 | 激情综合激情五月俺也去 | 97资源共享在线视频 | 日韩精品无码一本二本三本色 | 国产成人无码a区在线观看视频app | 国产成人精品视频ⅴa片软件竹菊 | 最近中文2019字幕第二页 | √天堂资源地址中文在线 | 任你躁在线精品免费 | 国产精品18久久久久久麻辣 | 亚洲精品国偷拍自产在线观看蜜桃 | 亚洲欧美综合区丁香五月小说 | 色情久久久av熟女人妻网站 | 无遮无挡爽爽免费视频 | 国产又粗又硬又大爽黄老大爷视 | 在线成人www免费观看视频 | 男女猛烈xx00免费视频试看 | 四虎国产精品免费久久 | 欧美丰满老熟妇xxxxx性 | 少妇高潮喷潮久久久影院 | 无码人妻出轨黑人中文字幕 | а天堂中文在线官网 | 天干天干啦夜天干天2017 | 国产亚洲精品久久久ai换 | 麻豆果冻传媒2021精品传媒一区下载 | 内射巨臀欧美在线视频 | 亚洲国产综合无码一区 | 国产成人精品必看 | 免费观看又污又黄的网站 | 久久久成人毛片无码 | 日韩视频 中文字幕 视频一区 | 76少妇精品导航 | 国产激情综合五月久久 | 88国产精品欧美一区二区三区 | 久久综合香蕉国产蜜臀av | 四虎永久在线精品免费网址 | 亚洲熟悉妇女xxx妇女av | 天天燥日日燥 | 欧美三级a做爰在线观看 | 偷窥日本少妇撒尿chinese | 国产成人精品视频ⅴa片软件竹菊 | 国产黑色丝袜在线播放 | 少妇性l交大片 | 日本精品久久久久中文字幕 | 久久国内精品自在自线 | 男女猛烈xx00免费视频试看 | 国色天香社区在线视频 | 国产av久久久久精东av | 国产精品亚洲专区无码不卡 | 伊在人天堂亚洲香蕉精品区 | 国产99久久精品一区二区 | 国产精品香蕉在线观看 | 亚洲精品无码人妻无码 | 性欧美疯狂xxxxbbbb | 日韩欧美中文字幕公布 | 精品国产一区二区三区av 性色 | 国产明星裸体无码xxxx视频 | 夜夜躁日日躁狠狠久久av | a片在线免费观看 | 国产无遮挡又黄又爽又色 | 精品久久久无码人妻字幂 | 国产精品亚洲综合色区韩国 | 国产香蕉97碰碰久久人人 | 日产国产精品亚洲系列 | 国产精品-区区久久久狼 | 兔费看少妇性l交大片免费 | 国产亚洲精品久久久久久久久动漫 | 欧美日韩一区二区综合 | 久9re热视频这里只有精品 | 97久久国产亚洲精品超碰热 | 日韩精品成人一区二区三区 | 麻豆果冻传媒2021精品传媒一区下载 | 精品欧洲av无码一区二区三区 | 成人无码视频免费播放 | 一本色道婷婷久久欧美 | 俄罗斯老熟妇色xxxx | 日本大香伊一区二区三区 | 成在人线av无码免费 | 久久精品女人的天堂av | 色婷婷综合激情综在线播放 | 国产精品高潮呻吟av久久 | 激情五月综合色婷婷一区二区 | 无码精品人妻一区二区三区av | 亚洲国产综合无码一区 | 超碰97人人做人人爱少妇 | 国产精品久久久午夜夜伦鲁鲁 | 噜噜噜亚洲色成人网站 | 亚洲の无码国产の无码影院 | 伊人色综合久久天天小片 | 四十如虎的丰满熟妇啪啪 | 无码午夜成人1000部免费视频 | 色婷婷欧美在线播放内射 | av人摸人人人澡人人超碰下载 | 国产精品-区区久久久狼 | 成熟人妻av无码专区 | 狠狠躁日日躁夜夜躁2020 | 国产卡一卡二卡三 | 欧洲欧美人成视频在线 | 国产无套粉嫩白浆在线 | 性欧美疯狂xxxxbbbb | 亚洲另类伦春色综合小说 | 最新国产乱人伦偷精品免费网站 | 精品成在人线av无码免费看 | 性啪啪chinese东北女人 | 国内精品久久毛片一区二区 | 久久精品一区二区三区四区 | 国产午夜亚洲精品不卡下载 | 少妇性俱乐部纵欲狂欢电影 | 日韩精品一区二区av在线 | 大地资源中文第3页 | 亚洲狠狠色丁香婷婷综合 | 欧美黑人性暴力猛交喷水 | 在线视频网站www色 | 俄罗斯老熟妇色xxxx | 日韩精品无码一区二区中文字幕 | 奇米影视7777久久精品 | 青草青草久热国产精品 | 暴力强奷在线播放无码 | 久久精品国产一区二区三区肥胖 | 日韩人妻无码中文字幕视频 | 99久久99久久免费精品蜜桃 | 无码免费一区二区三区 | 在线播放亚洲第一字幕 | 99精品无人区乱码1区2区3区 | 内射后入在线观看一区 | 日韩欧美成人免费观看 | 亚洲区小说区激情区图片区 | 国产成人无码a区在线观看视频app | 亲嘴扒胸摸屁股激烈网站 | 国产精品成人av在线观看 | 131美女爱做视频 | 亚洲欧洲无卡二区视頻 | 四虎永久在线精品免费网址 | 十八禁真人啪啪免费网站 | 国产精品亚洲五月天高清 | 久久国语露脸国产精品电影 | 少妇被黑人到高潮喷出白浆 | 无遮无挡爽爽免费视频 | 老熟妇仑乱视频一区二区 | 亚洲精品一区二区三区婷婷月 | 久久亚洲中文字幕精品一区 | 欧美色就是色 | 日本一卡二卡不卡视频查询 | av无码久久久久不卡免费网站 | 国产内射爽爽大片视频社区在线 | 欧美人与动性行为视频 | 国产精品.xx视频.xxtv | 2019nv天堂香蕉在线观看 | 亚洲区小说区激情区图片区 | 欧洲vodafone精品性 | 亚洲 a v无 码免 费 成 人 a v | 国产麻豆精品精东影业av网站 | 亚洲日本一区二区三区在线 | 色一情一乱一伦一区二区三欧美 | 天天拍夜夜添久久精品大 | 扒开双腿疯狂进出爽爽爽视频 | 在线天堂新版最新版在线8 | 久久精品中文字幕大胸 | 国产免费久久久久久无码 | 东京无码熟妇人妻av在线网址 | 牛和人交xxxx欧美 | 欧美人与动性行为视频 | 精品日本一区二区三区在线观看 | 亚洲色欲久久久综合网东京热 | 久久婷婷五月综合色国产香蕉 | 黄网在线观看免费网站 | 久久久久免费看成人影片 | 一本久道久久综合婷婷五月 | 18精品久久久无码午夜福利 | 久久综合网欧美色妞网 | 国产精品内射视频免费 | 无码国内精品人妻少妇 | 巨爆乳无码视频在线观看 | 亚洲国产欧美日韩精品一区二区三区 | 男人扒开女人内裤强吻桶进去 | 疯狂三人交性欧美 | 小泽玛莉亚一区二区视频在线 | 中国大陆精品视频xxxx | 日本一区二区三区免费播放 | 亚洲精品国产品国语在线观看 | 亚洲日本va中文字幕 | 国产成人无码午夜视频在线观看 | 麻豆国产人妻欲求不满谁演的 | 国产成人精品久久亚洲高清不卡 | 日本大乳高潮视频在线观看 | 无码一区二区三区在线观看 | 久久精品国产精品国产精品污 | 久久精品中文字幕大胸 | 国产av人人夜夜澡人人爽麻豆 | 又粗又大又硬又长又爽 | 国产热a欧美热a在线视频 | 宝宝好涨水快流出来免费视频 | 国产黄在线观看免费观看不卡 | 激情内射亚州一区二区三区爱妻 | 无码人妻少妇伦在线电影 | 国产片av国语在线观看 | 正在播放老肥熟妇露脸 | 亚洲欧美色中文字幕在线 | 初尝人妻少妇中文字幕 | 久久99久久99精品中文字幕 | 国产成人精品一区二区在线小狼 | 久久久久免费看成人影片 | 亚洲人成网站在线播放942 | 国产女主播喷水视频在线观看 | 欧美freesex黑人又粗又大 | 无码人妻少妇伦在线电影 | 澳门永久av免费网站 | 国语自产偷拍精品视频偷 | 成年美女黄网站色大免费全看 | 日本乱偷人妻中文字幕 | 少妇一晚三次一区二区三区 | 亚洲综合无码久久精品综合 | 狂野欧美激情性xxxx | 老熟女重囗味hdxx69 | 51国偷自产一区二区三区 | 亚洲国产精品无码久久久久高潮 | 55夜色66夜色国产精品视频 | 日本饥渴人妻欲求不满 | 亚洲狠狠色丁香婷婷综合 | 午夜不卡av免费 一本久久a久久精品vr综合 | 国产无遮挡又黄又爽免费视频 | 精品久久久久久人妻无码中文字幕 | 男人扒开女人内裤强吻桶进去 | 国产午夜福利100集发布 | 色五月丁香五月综合五月 | 妺妺窝人体色www在线小说 | 亚洲中文字幕无码中字 | 鲁一鲁av2019在线 | 亚洲国产一区二区三区在线观看 | 日欧一片内射va在线影院 | 四虎永久在线精品免费网址 | 精品偷自拍另类在线观看 | 亚洲无人区午夜福利码高清完整版 | 成 人 网 站国产免费观看 | 国产极品美女高潮无套在线观看 | 欧美激情内射喷水高潮 | 夜夜躁日日躁狠狠久久av | 丰满人妻一区二区三区免费视频 | 98国产精品综合一区二区三区 | 丰满人妻被黑人猛烈进入 | 熟妇人妻无码xxx视频 | 天堂无码人妻精品一区二区三区 | 中文字幕乱码人妻无码久久 | 国内精品久久久久久中文字幕 | 午夜精品久久久久久久久 | 无码人妻丰满熟妇区五十路百度 | 强开小婷嫩苞又嫩又紧视频 | 国产人妖乱国产精品人妖 | 精品国产av色一区二区深夜久久 | 久精品国产欧美亚洲色aⅴ大片 | 久久熟妇人妻午夜寂寞影院 | 亚洲高清偷拍一区二区三区 | 成人欧美一区二区三区黑人 | 激情内射亚州一区二区三区爱妻 | 欧美野外疯狂做受xxxx高潮 | 青青久在线视频免费观看 | 四虎永久在线精品免费网址 | 国产97色在线 | 免 | 人妻少妇精品无码专区二区 | 99久久精品日本一区二区免费 | 18禁黄网站男男禁片免费观看 | 国产亚洲精品久久久久久 | 亚洲成av人在线观看网址 | 日韩精品无码一区二区中文字幕 | 一本久道久久综合狠狠爱 | 少妇无码av无码专区在线观看 | 亚洲欧美中文字幕5发布 | 日日碰狠狠躁久久躁蜜桃 | 大地资源中文第3页 | 波多野结衣一区二区三区av免费 | 国产精品亚洲а∨无码播放麻豆 | 天天拍夜夜添久久精品大 | 国产女主播喷水视频在线观看 | 永久免费精品精品永久-夜色 | 国产精品亚洲专区无码不卡 | 成人精品天堂一区二区三区 | 少妇性荡欲午夜性开放视频剧场 | 亚洲国产精品久久久久久 | 少妇人妻av毛片在线看 | 亚洲 激情 小说 另类 欧美 | 亚洲熟妇色xxxxx亚洲 | 国精品人妻无码一区二区三区蜜柚 | 中文精品久久久久人妻不卡 | 欧美乱妇无乱码大黄a片 | 奇米影视888欧美在线观看 | 久久综合色之久久综合 | 亚洲精品久久久久中文第一幕 | 麻豆md0077饥渴少妇 | а天堂中文在线官网 | 久久人妻内射无码一区三区 | 亚洲精品一区二区三区四区五区 | 精品国偷自产在线 | 亚洲春色在线视频 | 国产亲子乱弄免费视频 | 成人毛片一区二区 | 女人被男人爽到呻吟的视频 | 人妻aⅴ无码一区二区三区 | 久久综合久久自在自线精品自 | 曰韩少妇内射免费播放 | 亚洲日本一区二区三区在线 | 久青草影院在线观看国产 | 97久久国产亚洲精品超碰热 | 成人亚洲精品久久久久软件 | 国产一区二区三区四区五区加勒比 | 日韩精品成人一区二区三区 | 国产精品va在线播放 | 中文字幕无线码免费人妻 | 亚洲日韩av一区二区三区四区 | 欧美成人家庭影院 | 国产成人综合美国十次 | 偷窥村妇洗澡毛毛多 | 日韩人妻无码一区二区三区久久99 | 国产成人一区二区三区在线观看 | 男女猛烈xx00免费视频试看 | 免费无码午夜福利片69 | 超碰97人人射妻 | 亚洲人成网站色7799 | 性生交大片免费看女人按摩摩 | 真人与拘做受免费视频一 | 国产肉丝袜在线观看 | 精品偷拍一区二区三区在线看 | 一本色道久久综合亚洲精品不卡 | 永久免费精品精品永久-夜色 | 中文字幕乱妇无码av在线 | 亚洲国产综合无码一区 | 免费观看激色视频网站 | 在线 国产 欧美 亚洲 天堂 | 亚洲第一无码av无码专区 | 无码国产乱人伦偷精品视频 | 麻豆国产人妻欲求不满 | 成人欧美一区二区三区 | 天天做天天爱天天爽综合网 | 成熟人妻av无码专区 | av小次郎收藏 | 国产麻豆精品精东影业av网站 | 中文字幕乱码人妻二区三区 | 国产成人无码av在线影院 | www成人国产高清内射 | 成年女人永久免费看片 | 国产人妻人伦精品 | 亚洲码国产精品高潮在线 | 麻豆国产丝袜白领秘书在线观看 | 日本大乳高潮视频在线观看 | 免费人成网站视频在线观看 | 东京热无码av男人的天堂 | 日本精品人妻无码免费大全 | 亚洲精品美女久久久久久久 | 久久精品国产精品国产精品污 | 国产偷自视频区视频 | 秋霞成人午夜鲁丝一区二区三区 | 少妇太爽了在线观看 | 捆绑白丝粉色jk震动捧喷白浆 | 亚洲人成影院在线无码按摩店 | 成人精品视频一区二区 | 丝袜足控一区二区三区 | 欧洲熟妇精品视频 | 亚洲无人区午夜福利码高清完整版 | 欧美丰满熟妇xxxx性ppx人交 | 丰满人妻被黑人猛烈进入 | 亚洲综合另类小说色区 | 88国产精品欧美一区二区三区 | 日本精品少妇一区二区三区 | 久久国产精品二国产精品 | 欧美激情综合亚洲一二区 | 亚洲色大成网站www国产 | 亚洲狠狠婷婷综合久久 | 久久精品女人的天堂av | 国产卡一卡二卡三 | 久久久久久国产精品无码下载 | 无码精品国产va在线观看dvd | 国产精品永久免费视频 | 久久综合九色综合97网 | 四十如虎的丰满熟妇啪啪 | www成人国产高清内射 | 好屌草这里只有精品 | 亚洲中文字幕va福利 | 欧美性生交活xxxxxdddd | 伊人久久大香线蕉亚洲 | 久久精品女人天堂av免费观看 | 中文无码成人免费视频在线观看 | 亚洲区欧美区综合区自拍区 | 成人亚洲精品久久久久 | 国产偷自视频区视频 | 亚洲中文无码av永久不收费 | 妺妺窝人体色www在线小说 | 欧美成人家庭影院 | 亚洲aⅴ无码成人网站国产app | 国产激情无码一区二区app | 荫蒂添的好舒服视频囗交 | 麻豆国产人妻欲求不满 | 国产乱人无码伦av在线a | 久久久久99精品成人片 | 无码国产色欲xxxxx视频 | 男女猛烈xx00免费视频试看 | 3d动漫精品啪啪一区二区中 | 麻豆成人精品国产免费 | 国产亲子乱弄免费视频 | 国产成人精品优优av | ass日本丰满熟妇pics | 纯爱无遮挡h肉动漫在线播放 | 日日麻批免费40分钟无码 | 国产亚洲精品久久久久久 | 日韩欧美中文字幕在线三区 | 亚洲区小说区激情区图片区 | 亚洲爆乳大丰满无码专区 | a片在线免费观看 | 全黄性性激高免费视频 | 久久久久久a亚洲欧洲av冫 | 亚洲色欲色欲天天天www | 丁香花在线影院观看在线播放 | 成人精品视频一区二区三区尤物 | 欧美日韩一区二区三区自拍 | 国产精品国产三级国产专播 | 亚洲欧洲日本综合aⅴ在线 | 欧美三级a做爰在线观看 | 日韩欧美中文字幕公布 | 人妻体内射精一区二区三四 | 亚洲日韩精品欧美一区二区 | 国产偷自视频区视频 | 国产精品美女久久久网av | 亚洲中文字幕成人无码 | 又粗又大又硬毛片免费看 | 久久久久久久人妻无码中文字幕爆 | 国产办公室秘书无码精品99 | 大肉大捧一进一出视频出来呀 | 女人被男人躁得好爽免费视频 | 娇妻被黑人粗大高潮白浆 | 亚洲成a人一区二区三区 | 人人妻人人藻人人爽欧美一区 | 亚洲日韩一区二区三区 | 亚洲国产精品成人久久蜜臀 | 国产精品久久久久无码av色戒 | 精品久久综合1区2区3区激情 | 亚洲 高清 成人 动漫 | 狂野欧美性猛xxxx乱大交 | 国产一区二区三区精品视频 | 成熟妇人a片免费看网站 | 麻豆精品国产精华精华液好用吗 | 色一情一乱一伦一区二区三欧美 | 国产午夜福利亚洲第一 | 国产激情综合五月久久 | 亚洲一区二区三区无码久久 | 精品一二三区久久aaa片 | 图片小说视频一区二区 | 性色欲网站人妻丰满中文久久不卡 | 伊人久久婷婷五月综合97色 | 国产熟妇另类久久久久 | 亚洲熟女一区二区三区 | 亚洲国产精品无码一区二区三区 | 国产黑色丝袜在线播放 | 少妇人妻大乳在线视频 | 亚洲中文字幕在线无码一区二区 | 日韩人妻无码一区二区三区久久99 | 熟女俱乐部五十路六十路av | 亚洲色在线无码国产精品不卡 | 亚洲国产精品一区二区第一页 | 亚洲精品国偷拍自产在线麻豆 | 中文字幕日产无线码一区 | 亚洲精品午夜国产va久久成人 | 性生交大片免费看女人按摩摩 | 激情内射日本一区二区三区 | 呦交小u女精品视频 | aⅴ在线视频男人的天堂 | 精品aⅴ一区二区三区 | 精品午夜福利在线观看 | 蜜桃视频韩日免费播放 | 亚洲精品一区二区三区大桥未久 | 粗大的内捧猛烈进出视频 | 人妻互换免费中文字幕 | 国产成人一区二区三区别 | 亚洲a无码综合a国产av中文 | 给我免费的视频在线观看 | 无码国模国产在线观看 | 国产sm调教视频在线观看 | 国产卡一卡二卡三 | 小泽玛莉亚一区二区视频在线 | 伊人久久大香线蕉av一区二区 | 国产性生大片免费观看性 | 久久亚洲精品中文字幕无男同 | 男女下面进入的视频免费午夜 | 人妻与老人中文字幕 | 中文字幕 人妻熟女 | 男人扒开女人内裤强吻桶进去 | 初尝人妻少妇中文字幕 | 亚洲一区二区三区偷拍女厕 | 国产成人无码专区 | 亚洲欧洲日本综合aⅴ在线 | 亚洲人成影院在线无码按摩店 | 亚洲男人av天堂午夜在 | 国内揄拍国内精品人妻 | 国产精品亚洲专区无码不卡 | 激情综合激情五月俺也去 | 亚洲一区二区三区无码久久 | 精品人妻中文字幕有码在线 | 精品无人区无码乱码毛片国产 | 99久久精品国产一区二区蜜芽 | 久久婷婷五月综合色国产香蕉 | 小鲜肉自慰网站xnxx | 欧洲熟妇精品视频 | 亚洲一区二区三区四区 | 精品国产国产综合精品 | 精品久久久久香蕉网 | 久久无码中文字幕免费影院蜜桃 | 国产午夜精品一区二区三区嫩草 | 精品国产精品久久一区免费式 | 国产成人精品视频ⅴa片软件竹菊 | 18禁止看的免费污网站 | 欧美激情内射喷水高潮 | 狂野欧美性猛xxxx乱大交 | 亚洲精品久久久久久一区二区 | 无码成人精品区在线观看 | 成 人 网 站国产免费观看 | 国产精品无码成人午夜电影 | 久久久精品成人免费观看 | 亚洲天堂2017无码中文 | 麻豆国产丝袜白领秘书在线观看 | 少妇高潮一区二区三区99 | 精品无码成人片一区二区98 | 亚洲一区二区三区国产精华液 | 欧美黑人乱大交 | 欧美精品一区二区精品久久 | 人妻与老人中文字幕 | 国产麻豆精品一区二区三区v视界 | 爱做久久久久久 | 成人免费视频在线观看 | 国产成人无码av片在线观看不卡 | 亚洲人成网站色7799 | 亚洲成av人影院在线观看 | 亚洲精品午夜国产va久久成人 | 国产国语老龄妇女a片 | 日本丰满熟妇videos | 国产精品久久久久久久9999 | 亚洲阿v天堂在线 | 亚洲一区av无码专区在线观看 | 日韩精品a片一区二区三区妖精 | 亚洲日韩中文字幕在线播放 | 国产电影无码午夜在线播放 | 国产精品久久久久久亚洲影视内衣 | 四虎国产精品一区二区 | 国产尤物精品视频 | 亚洲精品一区二区三区在线 | 亚洲国产精品毛片av不卡在线 | 久久精品国产99久久6动漫 | 狠狠色噜噜狠狠狠狠7777米奇 | 久久99国产综合精品 | 亚洲日韩av一区二区三区四区 | 亚洲综合另类小说色区 | 中文亚洲成a人片在线观看 | 2020久久超碰国产精品最新 | 亚洲人成影院在线无码按摩店 | 好爽又高潮了毛片免费下载 | 久久综合狠狠综合久久综合88 | 中文精品久久久久人妻不卡 | 亚洲中文字幕在线观看 | 波多野结衣aⅴ在线 | 一本久久伊人热热精品中文字幕 | 国产人妻人伦精品 | 亚洲va欧美va天堂v国产综合 | 国产内射老熟女aaaa | 亚洲欧美精品aaaaaa片 | 波多野结衣 黑人 | 日日麻批免费40分钟无码 | 无码成人精品区在线观看 | 疯狂三人交性欧美 | 欧美喷潮久久久xxxxx | 少妇的肉体aa片免费 | 亚洲精品国产精品乱码不卡 | 无码人妻精品一区二区三区不卡 | 亚洲中文字幕在线观看 | 大地资源网第二页免费观看 | 在线观看免费人成视频 | 亚洲精品久久久久avwww潮水 | 国产精品免费大片 | 欧美日本日韩 | 色欲人妻aaaaaaa无码 | 国色天香社区在线视频 | 国产性生交xxxxx无码 | 国产精品久久久久久亚洲毛片 | 国产成人无码a区在线观看视频app | 少妇无码吹潮 | 麻豆md0077饥渴少妇 | 无码成人精品区在线观看 | √8天堂资源地址中文在线 | 国产区女主播在线观看 | yw尤物av无码国产在线观看 | 日欧一片内射va在线影院 | 99久久久无码国产精品免费 | 亚洲中文字幕久久无码 | 青青青爽视频在线观看 | 人人爽人人澡人人人妻 | av人摸人人人澡人人超碰下载 | 伊在人天堂亚洲香蕉精品区 | 无码av岛国片在线播放 | 国产一区二区三区影院 | 久久这里只有精品视频9 | 欧美成人高清在线播放 | 无码一区二区三区在线观看 | 极品尤物被啪到呻吟喷水 | 领导边摸边吃奶边做爽在线观看 | 国产精品久久久久无码av色戒 | 日韩欧美成人免费观看 | 波多野结衣aⅴ在线 | 少妇高潮喷潮久久久影院 | 亚洲国产精华液网站w | 国产热a欧美热a在线视频 | 天堂无码人妻精品一区二区三区 | 久久精品99久久香蕉国产色戒 | 亚洲成a人片在线观看日本 | 国产精品丝袜黑色高跟鞋 | 曰韩少妇内射免费播放 | 免费男性肉肉影院 | 高清国产亚洲精品自在久久 | 国产高清不卡无码视频 | 亚洲国产精品一区二区美利坚 | 中文字幕中文有码在线 | 无码免费一区二区三区 | 性色欲情网站iwww九文堂 | 99视频精品全部免费免费观看 | аⅴ资源天堂资源库在线 | 高清国产亚洲精品自在久久 | 久久久久久a亚洲欧洲av冫 | 人人爽人人澡人人人妻 | 国产成人精品无码播放 | 日本大乳高潮视频在线观看 | 99久久婷婷国产综合精品青草免费 | 国产又爽又黄又刺激的视频 | 永久免费观看美女裸体的网站 | 国产一精品一av一免费 | 国产高潮视频在线观看 | 亚洲国产精品无码久久久久高潮 | 丰满人妻精品国产99aⅴ | 欧美阿v高清资源不卡在线播放 | 日日碰狠狠丁香久燥 | 天堂在线观看www | 亚洲成a人片在线观看无码 | 国产精品亚洲专区无码不卡 | 亚洲中文字幕在线观看 | 夜夜影院未满十八勿进 | 人人妻人人澡人人爽人人精品 | 欧美国产日产一区二区 | 欧美性猛交内射兽交老熟妇 | 强伦人妻一区二区三区视频18 | 欧美精品国产综合久久 | 丝袜足控一区二区三区 | 成人一区二区免费视频 | av在线亚洲欧洲日产一区二区 | 乱人伦人妻中文字幕无码久久网 | 久久99精品久久久久婷婷 | 亚洲无人区一区二区三区 | 国产熟妇高潮叫床视频播放 | 小泽玛莉亚一区二区视频在线 | 日本精品久久久久中文字幕 | 激情爆乳一区二区三区 | 水蜜桃av无码 | 999久久久国产精品消防器材 | 呦交小u女精品视频 | 国产口爆吞精在线视频 | 色 综合 欧美 亚洲 国产 | 国产精品va在线观看无码 | 国产精品无码一区二区三区不卡 | 18禁止看的免费污网站 | 2019午夜福利不卡片在线 | 国产成人无码专区 | 全黄性性激高免费视频 | 中文精品久久久久人妻不卡 | 人妻少妇被猛烈进入中文字幕 | 国内少妇偷人精品视频 | 亚洲综合在线一区二区三区 | 人妻夜夜爽天天爽三区 | 欧美日韩视频无码一区二区三 | 精品国产一区av天美传媒 | 日韩精品乱码av一区二区 | 欧美午夜特黄aaaaaa片 | 成人免费视频一区二区 | 免费人成在线视频无码 | 精品 日韩 国产 欧美 视频 | 色综合久久中文娱乐网 | 国产亚洲精品久久久久久 | 99久久人妻精品免费一区 | 精品欧洲av无码一区二区三区 | 国内精品一区二区三区不卡 | 男女猛烈xx00免费视频试看 | 国产一区二区三区日韩精品 | 久久精品中文闷骚内射 | 六月丁香婷婷色狠狠久久 | 日日躁夜夜躁狠狠躁 | √天堂中文官网8在线 | 色婷婷久久一区二区三区麻豆 | 亚洲欧洲中文日韩av乱码 | 丝袜足控一区二区三区 | 色诱久久久久综合网ywww | 国产两女互慰高潮视频在线观看 | 成人三级无码视频在线观看 | 亚洲成a人一区二区三区 | 中文字幕亚洲情99在线 | 亚洲国产精品一区二区美利坚 | 男人扒开女人内裤强吻桶进去 | 性色欲网站人妻丰满中文久久不卡 | 久久成人a毛片免费观看网站 | 亚拍精品一区二区三区探花 | 亚洲 另类 在线 欧美 制服 | 亚洲中文字幕无码中字 | 国产精品人妻一区二区三区四 | 无码任你躁久久久久久久 | 国产熟妇高潮叫床视频播放 | 日本精品人妻无码77777 天堂一区人妻无码 | 亚洲国产精华液网站w | 中文字幕中文有码在线 | 特黄特色大片免费播放器图片 | 天海翼激烈高潮到腰振不止 | 5858s亚洲色大成网站www | 久久精品国产精品国产精品污 | 亚洲一区二区三区国产精华液 | 国产在线aaa片一区二区99 | 人妻少妇精品视频专区 | 无码av免费一区二区三区试看 | 狠狠色噜噜狠狠狠狠7777米奇 | 国产香蕉尹人视频在线 | 无码纯肉视频在线观看 | 国产一区二区三区四区五区加勒比 | 丰满少妇女裸体bbw | 日韩欧美成人免费观看 | 国产高清av在线播放 | 国色天香社区在线视频 | 亚洲精品国偷拍自产在线观看蜜桃 | 九九热爱视频精品 | 天天爽夜夜爽夜夜爽 | 国产农村乱对白刺激视频 | 色婷婷综合中文久久一本 | 澳门永久av免费网站 | 日本xxxx色视频在线观看免费 | 任你躁在线精品免费 | 国产精品久久精品三级 | 人人澡人摸人人添 | 2019午夜福利不卡片在线 | 欧美人与动性行为视频 | 一本久道久久综合狠狠爱 | 国产免费无码一区二区视频 | 亚洲无人区午夜福利码高清完整版 | 日本精品人妻无码77777 天堂一区人妻无码 | 久久无码专区国产精品s | 免费观看的无遮挡av | 露脸叫床粗话东北少妇 | 国产亚洲精品久久久久久国模美 | 狂野欧美性猛xxxx乱大交 | 久久国产36精品色熟妇 | 亚洲天堂2017无码 | 欧美性生交活xxxxxdddd | 国产性生大片免费观看性 | 丰满人妻被黑人猛烈进入 | 中文字幕人成乱码熟女app | 国产精品多人p群无码 | 中文字幕无码人妻少妇免费 | 亚洲精品一区二区三区在线观看 | 国产人妻精品午夜福利免费 | 中文字幕亚洲情99在线 | 亚洲成av人片在线观看无码不卡 | 精品无人区无码乱码毛片国产 | 天天躁日日躁狠狠躁免费麻豆 | 女人色极品影院 | 99久久久无码国产精品免费 | 久久国产精品偷任你爽任你 | 亚洲精品久久久久久一区二区 | 又大又紧又粉嫩18p少妇 | 亚洲国产欧美在线成人 | 男人和女人高潮免费网站 | 日韩欧美群交p片內射中文 | 日产国产精品亚洲系列 | 人妻尝试又大又粗久久 | 蜜臀aⅴ国产精品久久久国产老师 | 国模大胆一区二区三区 | 好屌草这里只有精品 | 全黄性性激高免费视频 | 欧美国产日产一区二区 | 久久综合九色综合97网 | 漂亮人妻洗澡被公强 日日躁 | 国产亚洲精品久久久久久久久动漫 | 欧美zoozzooz性欧美 | 永久免费观看国产裸体美女 | 精品午夜福利在线观看 | 狠狠色噜噜狠狠狠狠7777米奇 | 1000部夫妻午夜免费 | 免费无码午夜福利片69 | 黑人巨大精品欧美一区二区 | 国产精品对白交换视频 | 娇妻被黑人粗大高潮白浆 | 少妇高潮喷潮久久久影院 | 无码人妻丰满熟妇区毛片18 | 无码av岛国片在线播放 | 亚洲一区二区三区含羞草 | 国产成人久久精品流白浆 | 久久成人a毛片免费观看网站 | 亚洲欧美日韩国产精品一区二区 | 水蜜桃色314在线观看 | 一本久道高清无码视频 | 国产激情精品一区二区三区 | 国产精品18久久久久久麻辣 | 人人妻人人澡人人爽欧美一区九九 | 欧洲欧美人成视频在线 | 精品无码一区二区三区的天堂 | √天堂中文官网8在线 | 久久久婷婷五月亚洲97号色 | 国精品人妻无码一区二区三区蜜柚 | 亚洲精品美女久久久久久久 | 成人片黄网站色大片免费观看 | 人妻无码αv中文字幕久久琪琪布 | 色欲av亚洲一区无码少妇 | 精品无码国产一区二区三区av | 国产精品国产三级国产专播 | 色 综合 欧美 亚洲 国产 | 欧美日本免费一区二区三区 | 色爱情人网站 | 国产一区二区不卡老阿姨 | 日本一区二区三区免费播放 | 波多野结衣 黑人 | 精品午夜福利在线观看 | 性生交大片免费看l | 麻豆成人精品国产免费 | 国产成人无码av在线影院 | 亚洲熟悉妇女xxx妇女av | 亚洲中文字幕乱码av波多ji | 欧美国产日产一区二区 | 亚洲 日韩 欧美 成人 在线观看 | 99riav国产精品视频 | 国产又粗又硬又大爽黄老大爷视 | 久久亚洲日韩精品一区二区三区 | 色婷婷综合中文久久一本 | 丝袜 中出 制服 人妻 美腿 | 亚洲一区二区三区无码久久 | 欧美人与善在线com | 2019午夜福利不卡片在线 | 中文字幕日产无线码一区 | 亚洲国产精品一区二区美利坚 | 亚洲熟妇色xxxxx欧美老妇y | 久久99久久99精品中文字幕 | 亚洲综合无码久久精品综合 | 色综合天天综合狠狠爱 | 高潮毛片无遮挡高清免费 | 精品国产精品久久一区免费式 | 国产热a欧美热a在线视频 | 天天做天天爱天天爽综合网 | 97精品国产97久久久久久免费 | 一本久久a久久精品vr综合 | 国产性生交xxxxx无码 | 伊人久久大香线焦av综合影院 | 国产精品久久久久久久影院 | 国产香蕉97碰碰久久人人 | 国产口爆吞精在线视频 | 国产成人无码一二三区视频 | 国产亚洲视频中文字幕97精品 | 999久久久国产精品消防器材 | 国产sm调教视频在线观看 | 国产精品igao视频网 | 少妇性俱乐部纵欲狂欢电影 | 国产精华av午夜在线观看 | 99麻豆久久久国产精品免费 | 成人免费视频在线观看 | 少妇久久久久久人妻无码 | 免费看男女做好爽好硬视频 | 欧美老熟妇乱xxxxx | 亚洲国产精华液网站w | 国产亚洲人成a在线v网站 | 亚洲成a人片在线观看无码3d | 牲欲强的熟妇农村老妇女视频 | 99精品久久毛片a片 | 大肉大捧一进一出好爽视频 | 撕开奶罩揉吮奶头视频 | 午夜福利试看120秒体验区 | 国产精品二区一区二区aⅴ污介绍 | 午夜性刺激在线视频免费 | 国产精品亚洲专区无码不卡 | 丰满护士巨好爽好大乳 | 国产午夜福利亚洲第一 | 亚洲色成人中文字幕网站 | 久久久亚洲欧洲日产国码αv | 中文无码精品a∨在线观看不卡 | 久久久精品人妻久久影视 | 成人亚洲精品久久久久软件 | 曰本女人与公拘交酡免费视频 | 国产午夜手机精彩视频 | 亚洲 a v无 码免 费 成 人 a v | 狠狠色丁香久久婷婷综合五月 | 一本久道久久综合狠狠爱 | 国产精品怡红院永久免费 | 国产精品久久久久久久9999 | 人妻aⅴ无码一区二区三区 | 亚洲人成网站在线播放942 | 婷婷五月综合缴情在线视频 | 2019nv天堂香蕉在线观看 | 国产乱人伦app精品久久 国产在线无码精品电影网 国产国产精品人在线视 | 四十如虎的丰满熟妇啪啪 | 18禁止看的免费污网站 | 久久综合香蕉国产蜜臀av | 欧美自拍另类欧美综合图片区 | 久久熟妇人妻午夜寂寞影院 | 日韩人妻无码一区二区三区久久99 | 久久精品人妻少妇一区二区三区 | 一二三四社区在线中文视频 | 久久久精品456亚洲影院 | 激情综合激情五月俺也去 | 乱码午夜-极国产极内射 | 亚洲色欲色欲欲www在线 | 欧美 日韩 亚洲 在线 | 日本精品高清一区二区 | 久久久成人毛片无码 | 国产成人无码av片在线观看不卡 | 久久午夜夜伦鲁鲁片无码免费 | 男女爱爱好爽视频免费看 | 亚洲aⅴ无码成人网站国产app | 波多野42部无码喷潮在线 | 99久久人妻精品免费二区 | 鲁一鲁av2019在线 | 九一九色国产 | 精品无码av一区二区三区 | 久久精品国产99精品亚洲 | 性欧美大战久久久久久久 | 国产欧美精品一区二区三区 | 亚洲日本va午夜在线电影 | 人人澡人摸人人添 | 无码吃奶揉捏奶头高潮视频 | 国产精品自产拍在线观看 | 欧美一区二区三区视频在线观看 | 久久无码中文字幕免费影院蜜桃 | 精品熟女少妇av免费观看 | 国产麻豆精品精东影业av网站 |