欧美videos另类精品-欧美videos另类极品-欧美vide-欧美va在线视频-欧美va在线观看-欧美va在线播放免费观看

細(xì)數(shù) TS 中那些奇怪的符號(hào)

2020-9-4    seo達(dá)人

TypeScript 是一種由微軟開發(fā)的自由和開源的編程語(yǔ)言。它是 JavaScript 的一個(gè)超集,而且本質(zhì)上向這個(gè)語(yǔ)言添加了可選的靜態(tài)類型和基于類的面向?qū)ο缶幊獭?


本文阿寶哥將分享這些年在學(xué)習(xí) TypeScript 過(guò)程中,遇到的 10 大 “奇怪” 的符號(hào)。其中有一些符號(hào),阿寶哥第一次見(jiàn)的時(shí)候也覺(jué)得 “一臉懵逼”,希望本文對(duì)學(xué)習(xí) TypeScript 的小伙伴能有一些幫助。


好的,下面我們來(lái)開始介紹第一個(gè)符號(hào) —— ! 非空斷言操作符。


一、! 非空斷言操作符

在上下文中當(dāng)類型檢查器無(wú)法斷定類型時(shí),一個(gè)新的后綴表達(dá)式操作符 ! 可以用于斷言操作對(duì)象是非 null 和非 undefined 類型。具體而言,x! 將從 x 值域中排除 null 和 undefined 。


那么非空斷言操作符到底有什么用呢?下面我們先來(lái)看一下非空斷言操作符的一些使用場(chǎng)景。


1.1 忽略 undefined 和 null 類型

function myFunc(maybeString: string | undefined | null) { // Type 'string | null | undefined' is not assignable to type 'string'. // Type 'undefined' is not assignable to type 'string'.  const onlyString: string = maybeString; // Error const ignoreUndefinedAndNull: string = maybeString!; // Ok }

1.2 調(diào)用函數(shù)時(shí)忽略 undefined 類型

type NumGenerator = () => number; function myFunc(numGenerator: NumGenerator | undefined) { // Object is possibly 'undefined'.(2532) // Cannot invoke an object which is possibly 'undefined'.(2722) const num1 = numGenerator(); // Error const num2 = numGenerator!(); //OK }

因?yàn)?! 非空斷言操作符會(huì)從編譯生成的 JavaScript 代碼中移除,所以在實(shí)際使用的過(guò)程中,要特別注意。比如下面這個(gè)例子:


const a: number | undefined = undefined; const b: number = a!; console.log(b);

以上 TS 代碼會(huì)編譯生成以下 ES5 代碼:


"use strict"; const a = undefined; const b = a; console.log(b);

雖然在 TS 代碼中,我們使用了非空斷言,使得 const b: number = a!; 語(yǔ)句可以通過(guò) TypeScript 類型檢查器的檢查。但在生成的 ES5 代碼中,! 非空斷言操作符被移除了,所以在瀏覽器中執(zhí)行以上代碼,在控制臺(tái)會(huì)輸出 undefined。


二、?. 運(yùn)算符

TypeScript 3.7 實(shí)現(xiàn)了呼聲最高的 ECMAScript 功能之一:可選鏈(Optional Chaining)。有了可選鏈后,我們編寫代碼時(shí)如果遇到 null 或 undefined 就可以立即停止某些表達(dá)式的運(yùn)行。可選鏈的核心是新的 ?. 運(yùn)算符,它支持以下語(yǔ)法:


obj?.prop

obj?.[expr]

arr?.[index] func?.(args)

這里我們來(lái)舉一個(gè)可選的屬性訪問(wèn)的例子:


const val = a?.b;

為了更好的理解可選鏈,我們來(lái)看一下該 const val = a?.b 語(yǔ)句編譯生成的 ES5 代碼:


var val = a === null || a === void 0 ? void 0 : a.b;

上述的代碼會(huì)自動(dòng)檢查對(duì)象 a 是否為 null 或 undefined,如果是的話就立即返回 undefined,這樣就可以立即停止某些表達(dá)式的運(yùn)行。你可能已經(jīng)想到可以使用 ?. 來(lái)替代很多使用 && 執(zhí)行空檢查的代碼:


if(a && a.b) { } if(a?.b){ } /**

* if(a?.b){ } 編譯后的ES5代碼

*

* if(

*  a === null || a === void 0

*  ? void 0 : a.b) {

* }

*/

但需要注意的是,?. 與 && 運(yùn)算符行為略有不同,&& 專門用于檢測(cè) falsy 值,比如空字符串、0、NaN、null 和 false 等。而 ?. 只會(huì)驗(yàn)證對(duì)象是否為 null 或 undefined,對(duì)于 0 或空字符串來(lái)說(shuō),并不會(huì)出現(xiàn) “短路”。


2.1 可選元素訪問(wèn)

可選鏈除了支持可選屬性的訪問(wèn)之外,它還支持可選元素的訪問(wèn),它的行為類似于可選屬性的訪問(wèn),只是可選元素的訪問(wèn)允許我們?cè)L問(wèn)非標(biāo)識(shí)符的屬性,比如任意字符串、數(shù)字索引和 Symbol:


function tryGetArrayElement<T>(arr?: T[], index: number = 0) { return arr?.[index];

}

以上代碼經(jīng)過(guò)編譯后會(huì)生成以下 ES5 代碼:


"use strict"; function tryGetArrayElement(arr, index) { if (index === void 0) { index = 0; } return arr === null || arr === void 0 ? void 0 : arr[index];

}

通過(guò)觀察生成的 ES5 代碼,很明顯在 tryGetArrayElement 方法中會(huì)自動(dòng)檢測(cè)輸入?yún)?shù) arr 的值是否為 null 或 undefined,從而保證了我們代碼的健壯性。


2.2 可選鏈與函數(shù)調(diào)用

當(dāng)嘗試調(diào)用一個(gè)可能不存在的方法時(shí)也可以使用可選鏈。在實(shí)際開發(fā)過(guò)程中,這是很有用的。系統(tǒng)中某個(gè)方法不可用,有可能是由于版本不一致或者用戶設(shè)備兼容性問(wèn)題導(dǎo)致的。函數(shù)調(diào)用時(shí)如果被調(diào)用的方法不存在,使用可選鏈可以使表達(dá)式自動(dòng)返回 undefined 而不是拋出一個(gè)異常。


可選調(diào)用使用起來(lái)也很簡(jiǎn)單,比如:


let result = obj.customMethod?.();

該 TypeScript 代碼編譯生成的 ES5 代碼如下:


var result = (_a = obj.customMethod) === null || _a === void 0 ? void 0 : _a.call(obj);

另外在使用可選調(diào)用的時(shí)候,我們要注意以下兩個(gè)注意事項(xiàng):


如果存在一個(gè)屬性名且該屬性名對(duì)應(yīng)的值不是函數(shù)類型,使用 ?. 仍然會(huì)產(chǎn)生一個(gè) TypeError 異常。

可選鏈的運(yùn)算行為被局限在屬性的訪問(wèn)、調(diào)用以及元素的訪問(wèn) —— 它不會(huì)沿伸到后續(xù)的表達(dá)式中,也就是說(shuō)可選調(diào)用不會(huì)阻止 a?.b / someMethod() 表達(dá)式中的除法運(yùn)算或 someMethod 的方法調(diào)用。

三、?? 空值合并運(yùn)算符

在 TypeScript 3.7 版本中除了引入了前面介紹的可選鏈 ?. 之外,也引入了一個(gè)新的邏輯運(yùn)算符 —— 空值合并運(yùn)算符 ??。當(dāng)左側(cè)操作數(shù)為 null 或 undefined 時(shí),其返回右側(cè)的操作數(shù),否則返回左側(cè)的操作數(shù)。


與邏輯或 || 運(yùn)算符不同,邏輯或會(huì)在左操作數(shù)為 falsy 值時(shí)返回右側(cè)操作數(shù)。也就是說(shuō),如果你使用 || 來(lái)為某些變量設(shè)置默認(rèn)的值時(shí),你可能會(huì)遇到意料之外的行為。比如為 falsy 值(''、NaN 或 0)時(shí)。


這里來(lái)看一個(gè)具體的例子:


const foo = null ?? 'default string'; console.log(foo); // 輸出:"default string" const baz = 0 ?? 42; console.log(baz); // 輸出:0

以上 TS 代碼經(jīng)過(guò)編譯后,會(huì)生成以下 ES5 代碼:


"use strict"; var _a, _b; var foo = (_a = null) !== null && _a !== void 0 ? _a : 'default string';

console.log(foo); // 輸出:"default string" var baz = (_b = 0) !== null && _b !== void 0 ? _b : 42;

console.log(baz); // 輸出:0

通過(guò)觀察以上代碼,我們更加直觀的了解到,空值合并運(yùn)算符是如何解決前面 || 運(yùn)算符存在的潛在問(wèn)題。下面我們來(lái)介紹空值合并運(yùn)算符的特性和使用時(shí)的一些注意事項(xiàng)。


3.1 短路

當(dāng)空值合并運(yùn)算符的左表達(dá)式不為 null 或 undefined 時(shí),不會(huì)對(duì)右表達(dá)式進(jìn)行求值。


function A() { console.log('A was called'); return undefined;} function B() { console.log('B was called'); return false;} function C() { console.log('C was called'); return "foo";} console.log(A() ?? C()); console.log(B() ?? C());

上述代碼運(yùn)行后,控制臺(tái)會(huì)輸出以下結(jié)果:


A was called

C was called

foo

B was called

false

3.2 不能與 && 或 || 操作符共用

若空值合并運(yùn)算符 ?? 直接與 AND(&&)和 OR(||)操作符組合使用 ?? 是不行的。這種情況下會(huì)拋出 SyntaxError。


// '||' and '??' operations cannot be mixed without parentheses.(5076) null || undefined ?? "foo"; // raises a SyntaxError // '&&' and '??' operations cannot be mixed without parentheses.(5076) true && undefined ?? "foo"; // raises a SyntaxError

但當(dāng)使用括號(hào)來(lái)顯式表明優(yōu)先級(jí)時(shí)是可行的,比如:


(null || undefined ) ?? "foo"; // 返回 "foo"

3.3 與可選鏈操作符 ?. 的關(guān)系

空值合并運(yùn)算符針對(duì) undefined 與 null 這兩個(gè)值,可選鏈?zhǔn)讲僮鞣??. 也是如此。可選鏈?zhǔn)讲僮鞣瑢?duì)于訪問(wèn)屬性可能為 undefined 與 null 的對(duì)象時(shí)非常有用。


interface Customer {

 name: string;

 city?: string;

} let customer: Customer = {

 name: "Semlinker" }; let customerCity = customer?.city ?? "Unknown city"; console.log(customerCity); // 輸出:Unknown city

前面我們已經(jīng)介紹了空值合并運(yùn)算符的應(yīng)用場(chǎng)景和使用時(shí)的一些注意事項(xiàng),該運(yùn)算符不僅可以在 TypeScript 3.7 以上版本中使用。當(dāng)然你也可以在 JavaScript 的環(huán)境中使用它,但你需要借助 Babel,在 Babel 7.8.0 版本也開始支持空值合并運(yùn)算符。


四、?: 可選屬性

在面向?qū)ο笳Z(yǔ)言中,接口是一個(gè)很重要的概念,它是對(duì)行為的抽象,而具體如何行動(dòng)需要由類去實(shí)現(xiàn)。 TypeScript 中的接口是一個(gè)非常靈活的概念,除了可用于對(duì)類的一部分行為進(jìn)行抽象以外,也常用于對(duì)「對(duì)象的形狀(Shape)」進(jìn)行描述。


在 TypeScript 中使用 interface 關(guān)鍵字就可以聲明一個(gè)接口:


interface Person {

 name: string;

 age: number;

} let semlinker: Person = {

 name: "semlinker",

 age: 33,

};

在以上代碼中,我們聲明了 Person 接口,它包含了兩個(gè)必填的屬性 name 和 age。在初始化 Person 類型變量時(shí),如果缺少某個(gè)屬性,TypeScript 編譯器就會(huì)提示相應(yīng)的錯(cuò)誤信息,比如:


// Property 'age' is missing in type '{ name: string; }' but required in type 'Person'.(2741) let lolo: Person  = { // Error name: "lolo" }

為了解決上述的問(wèn)題,我們可以把某個(gè)屬性聲明為可選的:


interface Person {

 name: string;

 age?: number;

} let lolo: Person  = {

 name: "lolo" }

4.1 工具類型

4.1.1 Partial<T>

在實(shí)際項(xiàng)目開發(fā)過(guò)程中,為了提高代碼復(fù)用率,我們可以利用 TypeScript 內(nèi)置的工具類型 Partial<T> 來(lái)快速把某個(gè)接口類型中定義的屬性變成可選的:


interface PullDownRefreshConfig {

 threshold: number;

 stop: number;

} /**

* type PullDownRefreshOptions = {

*   threshold?: number | undefined;

*   stop?: number | undefined;

* }

*/ type PullDownRefreshOptions = Partial<PullDownRefreshConfig>

是不是覺(jué)得 Partial<T> 很方便,下面讓我們來(lái)看一下它是如何實(shí)現(xiàn)的:


/**

* Make all properties in T optional

*/ type Partial<T> = {

 [P in keyof T]?: T[P];

};

4.1.2 Required<T>

既然可以快速地把某個(gè)接口中定義的屬性全部聲明為可選,那能不能把所有的可選的屬性變成必選的呢?答案是可以的,針對(duì)這個(gè)需求,我們可以使用 Required<T> 工具類型,具體的使用方式如下:


interface PullDownRefreshConfig {

 threshold: number;

 stop: number;

} type PullDownRefreshOptions = Partial<PullDownRefreshConfig> /**

* type PullDownRefresh = {

*   threshold: number;

*   stop: number;

* }

*/ type PullDownRefresh = Required<Partial<PullDownRefreshConfig>>

同樣,我們來(lái)看一下 Required<T> 工具類型是如何實(shí)現(xiàn)的:


/**

* Make all properties in T required

*/ type Required<T> = {

 [P in keyof T]-?: T[P];

};

原來(lái)在 Required<T> 工具類型內(nèi)部,通過(guò) -? 移除了可選屬性中的 ?,使得屬性從可選變?yōu)楸剡x的。


五、& 運(yùn)算符

在 TypeScript 中交叉類型是將多個(gè)類型合并為一個(gè)類型。通過(guò) & 運(yùn)算符可以將現(xiàn)有的多種類型疊加到一起成為一種類型,它包含了所需的所有類型的特性。


type PartialPointX = { x: number; }; type Point = PartialPointX & { y: number; }; let point: Point = {

 x: 1,

 y: 1 }

在上面代碼中我們先定義了 PartialPointX 類型,接著使用 & 運(yùn)算符創(chuàng)建一個(gè)新的 Point 類型,表示一個(gè)含有 x 和 y 坐標(biāo)的點(diǎn),然后定義了一個(gè) Point 類型的變量并初始化。


5.1 同名基礎(chǔ)類型屬性的合并

那么現(xiàn)在問(wèn)題來(lái)了,假設(shè)在合并多個(gè)類型的過(guò)程中,剛好出現(xiàn)某些類型存在相同的成員,但對(duì)應(yīng)的類型又不一致,比如:


interface X {

 c: string;

 d: string;

} interface Y {

 c: number;

 e: string } type XY = X & Y; type YX = Y & X; let p: XY; let q: YX;

在上面的代碼中,接口 X 和接口 Y 都含有一個(gè)相同的成員 c,但它們的類型不一致。對(duì)于這種情況,此時(shí) XY 類型或 YX 類型中成員 c 的類型是不是可以是 string 或 number 類型呢?比如下面的例子:


p = { c: 6, d: "d", e: "e" };



q = { c: "c", d: "d", e: "e" };



為什么接口 X 和接口 Y 混入后,成員 c 的類型會(huì)變成 never 呢?這是因?yàn)榛烊牒蟪蓡T c 的類型為 string & number,即成員 c 的類型既可以是 string 類型又可以是 number 類型。很明顯這種類型是不存在的,所以混入后成員 c 的類型為 never。


5.2 同名非基礎(chǔ)類型屬性的合并

在上面示例中,剛好接口 X 和接口 Y 中內(nèi)部成員 c 的類型都是基本數(shù)據(jù)類型,那么如果是非基本數(shù)據(jù)類型的話,又會(huì)是什么情形。我們來(lái)看個(gè)具體的例子:


interface D { d: boolean; } interface E { e: string; } interface F { f: number; } interface A { x: D; } interface B { x: E; } interface C { x: F; } type ABC = A & B & C; let abc: ABC = {

 x: {

   d: true,

   e: 'semlinker',

   f: 666 }

}; console.log('abc:', abc);

以上代碼成功運(yùn)行后,控制臺(tái)會(huì)輸出以下結(jié)果:




由上圖可知,在混入多個(gè)類型時(shí),若存在相同的成員,且成員類型為非基本數(shù)據(jù)類型,那么是可以成功合并。


六、| 分隔符

在 TypeScript 中聯(lián)合類型(Union Types)表示取值可以為多種類型中的一種,聯(lián)合類型使用 | 分隔每個(gè)類型。聯(lián)合類型通常與 null 或 undefined 一起使用:


const sayHello = (name: string | undefined) => { /* ... */ };

以上示例中 name 的類型是 string | undefined 意味著可以將 string 或 undefined 的值傳遞給 sayHello 函數(shù)。


sayHello("semlinker");

sayHello(undefined);

此外,對(duì)于聯(lián)合類型來(lái)說(shuō),你可能會(huì)遇到以下的用法:


let num: 1 | 2 = 1; type EventNames = 'click' | 'scroll' | 'mousemove';

示例中的 1、2 或 'click' 被稱為字面量類型,用來(lái)約束取值只能是某幾個(gè)值中的一個(gè)。


6.1 類型保護(hù)

當(dāng)使用聯(lián)合類型時(shí),我們必須盡量把當(dāng)前值的類型收窄為當(dāng)前值的實(shí)際類型,而類型保護(hù)就是實(shí)現(xiàn)類型收窄的一種手段。


類型保護(hù)是可執(zhí)行運(yùn)行時(shí)檢查的一種表達(dá)式,用于確保該類型在一定的范圍內(nèi)。換句話說(shuō),類型保護(hù)可以保證一個(gè)字符串是一個(gè)字符串,盡管它的值也可以是一個(gè)數(shù)字。類型保護(hù)與特性檢測(cè)并不是完全不同,其主要思想是嘗試檢測(cè)屬性、方法或原型,以確定如何處理值。


目前主要有四種的方式來(lái)實(shí)現(xiàn)類型保護(hù):


6.1.1 in 關(guān)鍵字

interface Admin {

 name: string;

 privileges: string[];

} interface Employee {

 name: string;

 startDate: Date;

} type UnknownEmployee = Employee | Admin; function printEmployeeInformation(emp: UnknownEmployee) { console.log("Name: " + emp.name); if ("privileges" in emp) { console.log("Privileges: " + emp.privileges);

 } if ("startDate" in emp) { console.log("Start Date: " + emp.startDate);

 }

}

6.1.2 typeof 關(guān)鍵字

function padLeft(value: string, padding: string | number) { if (typeof padding === "number") { return Array(padding + 1).join(" ") + value;

 } if (typeof padding === "string") { return padding + value;

 } throw new Error(`Expected string or number, got '${padding}'.`);

}

typeof 類型保護(hù)只支持兩種形式:typeof v === "typename" 和 typeof v !== typename,"typename" 必須是 "number", "string", "boolean" 或 "symbol"。 但是 TypeScript 并不會(huì)阻止你與其它字符串比較,語(yǔ)言不會(huì)把那些表達(dá)式識(shí)別為類型保護(hù)。


6.1.3 instanceof 關(guān)鍵字

interface Padder {

 getPaddingString(): string;

} class SpaceRepeatingPadder implements Padder { constructor(private numSpaces: number) {}

 getPaddingString() { return Array(this.numSpaces + 1).join(" ");

 }

} class StringPadder implements Padder { constructor(private value: string) {}

 getPaddingString() { return this.value;

 }

} let padder: Padder = new SpaceRepeatingPadder(6); if (padder instanceof SpaceRepeatingPadder) { // padder的類型收窄為 'SpaceRepeatingPadder' }

6.1.4 自定義類型保護(hù)的類型謂詞(type predicate)

function isNumber(x: any): x is number { return typeof x === "number";

} function isString(x: any): x is string { return typeof x === "string";

}

七、_ 數(shù)字分隔符

TypeScript 2.7 帶來(lái)了對(duì)數(shù)字分隔符的支持,正如數(shù)值分隔符 ECMAScript 提案中所概述的那樣。對(duì)于一個(gè)數(shù)字字面量,你現(xiàn)在可以通過(guò)把一個(gè)下劃線作為它們之間的分隔符來(lái)分組數(shù)字:


const inhabitantsOfMunich = 1_464_301; const distanceEarthSunInKm = 149_600_000; const fileSystemPermission = 0b111_111_000; const bytes = 0b1111_10101011_11110000_00001101;

分隔符不會(huì)改變數(shù)值字面量的值,但邏輯分組使人們更容易一眼就能讀懂?dāng)?shù)字。以上 TS 代碼經(jīng)過(guò)編譯后,會(huì)生成以下 ES5 代碼:


"use strict"; var inhabitantsOfMunich = 1464301; var distanceEarthSunInKm = 149600000; var fileSystemPermission = 504; var bytes = 262926349;

7.1 使用限制

雖然數(shù)字分隔符看起來(lái)很簡(jiǎn)單,但在使用時(shí)還是有一些限制。比如你只能在兩個(gè)數(shù)字之間添加 _ 分隔符。以下的使用方式是非法的:


// Numeric separators are not allowed here.(6188) 3_.141592 // Error 3._141592 // Error // Numeric separators are not allowed here.(6188) 1_e10 // Error 1e_10 // Error // Cannot find name '_126301'.(2304) _126301 // Error // Numeric separators are not allowed here.(6188) 126301_ // Error // Cannot find name 'b111111000'.(2304) // An identifier or keyword cannot immediately follow a numeric literal.(1351) 0_b111111000 // Error // Numeric separators are not allowed here.(6188) 0b_111111000 // Error

當(dāng)然你也不能連續(xù)使用多個(gè) _ 分隔符,比如:


// Multiple consecutive numeric separators are not permitted.(6189) 123__456 // Error

7.2 解析分隔符

此外,需要注意的是以下用于解析數(shù)字的函數(shù)是不支持分隔符:


Number()

parseInt()

parseFloat()

這里我們來(lái)看一下實(shí)際的例子:


Number('123_456') NaN parseInt('123_456') 123 parseFloat('123_456') 123

很明顯對(duì)于以上的結(jié)果不是我們所期望的,所以在處理分隔符時(shí)要特別注意。當(dāng)然要解決上述問(wèn)題,也很簡(jiǎn)單只需要非數(shù)字的字符刪掉即可。這里我們來(lái)定義一個(gè) removeNonDigits 的函數(shù):


const RE_NON_DIGIT = /[^0-9]/gu; function removeNonDigits(str) {

 str = str.replace(RE_NON_DIGIT, ''); return Number(str);

}

該函數(shù)通過(guò)調(diào)用字符串的 replace 方法來(lái)移除非數(shù)字的字符,具體的使用方式如下:


removeNonDigits('123_456') 123456 removeNonDigits('149,600,000') 149600000 removeNonDigits('1,407,836') 1407836

八、<Type> 語(yǔ)法

8.1 TypeScript 斷言

有時(shí)候你會(huì)遇到這樣的情況,你會(huì)比 TypeScript 更了解某個(gè)值的詳細(xì)信息。通常這會(huì)發(fā)生在你清楚地知道一個(gè)實(shí)體具有比它現(xiàn)有類型更確切的類型。


通過(guò)類型斷言這種方式可以告訴編譯器,“相信我,我知道自己在干什么”。類型斷言好比其他語(yǔ)言里的類型轉(zhuǎn)換,但是不進(jìn)行特殊的數(shù)據(jù)檢查和解構(gòu)。它沒(méi)有運(yùn)行時(shí)的影響,只是在編譯階段起作用。


類型斷言有兩種形式:


8.1.1 “尖括號(hào)” 語(yǔ)法

let someValue: any = "this is a string"; let strLength: number = (<string>someValue).length;

8.1.2 as 語(yǔ)法

let someValue: any = "this is a string"; let strLength: number = (someValue as string).length;

8.2 TypeScript 泛型

對(duì)于剛接觸 TypeScript 泛型的讀者來(lái)說(shuō),首次看到 <T> 語(yǔ)法會(huì)感到陌生。其實(shí)它沒(méi)有什么特別,就像傳遞參數(shù)一樣,我們傳遞了我們想要用于特定函數(shù)調(diào)用的類型。




參考上面的圖片,當(dāng)我們調(diào)用 identity<Number>(1) ,Number 類型就像參數(shù) 1 一樣,它將在出現(xiàn) T 的任何位置填充該類型。圖中 <T> 內(nèi)部的 T 被稱為類型變量,它是我們希望傳遞給 identity 函數(shù)的類型占位符,同時(shí)它被分配給 value 參數(shù)用來(lái)代替它的類型:此時(shí) T 充當(dāng)?shù)氖穷愋停皇翘囟ǖ?Number 類型。


其中 T 代表 Type,在定義泛型時(shí)通常用作第一個(gè)類型變量名稱。但實(shí)際上 T 可以用任何有效名稱代替。除了 T 之外,以下是常見(jiàn)泛型變量代表的意思:


K(Key):表示對(duì)象中的鍵類型;

V(Value):表示對(duì)象中的值類型;

E(Element):表示元素類型。

其實(shí)并不是只能定義一個(gè)類型變量,我們可以引入希望定義的任何數(shù)量的類型變量。比如我們引入一個(gè)新的類型變量 U,用于擴(kuò)展我們定義的 identity 函數(shù):


function identity <T, U>(value: T, message: U) : T { console.log(message); return value;

} console.log(identity<Number, string>(68, "Semlinker"));



除了為類型變量顯式設(shè)定值之外,一種更常見(jiàn)的做法是使編譯器自動(dòng)選擇這些類型,從而使代碼更簡(jiǎn)潔。我們可以完全省略尖括號(hào),比如:


function identity <T, U>(value: T, message: U) : T { console.log(message); return value;

} console.log(identity(68, "Semlinker"));

對(duì)于上述代碼,編譯器足夠聰明,能夠知道我們的參數(shù)類型,并將它們賦值給 T 和 U,而不需要開發(fā)人員顯式指定它們。


九、@XXX 裝飾器

9.1 裝飾器語(yǔ)法

對(duì)于一些剛接觸 TypeScript 的小伙伴來(lái)說(shuō),在第一次看到 @Plugin({...}) 這種語(yǔ)法可能會(huì)覺(jué)得很驚訝。其實(shí)這是裝飾器的語(yǔ)法,裝飾器的本質(zhì)是一個(gè)函數(shù),通過(guò)裝飾器我們可以方便地定義與對(duì)象相關(guān)的元數(shù)據(jù)。


@Plugin({

 pluginName: 'Device',

 plugin: 'cordova-plugin-device',

 pluginRef: 'device',

 repo: 'https://github.com/apache/cordova-plugin-device',

 platforms: ['Android', 'Browser', 'iOS', 'macOS', 'Windows'],

}) @Injectable() export class Device extends IonicNativePlugin {}

在以上代碼中,我們通過(guò)裝飾器來(lái)保存 ionic-native 插件的相關(guān)元信息,而 @Plugin({...}) 中的 @ 符號(hào)只是語(yǔ)法糖,為什么說(shuō)是語(yǔ)法糖呢?這里我們來(lái)看一下編譯生成的 ES5 代碼:


var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r;

}; var Device = /** @class */ (function (_super) {

   __extends(Device, _super); function Device() { return _super !== null && _super.apply(this, arguments) || this;

   }

   Device = __decorate([

       Plugin({ pluginName: 'Device', plugin: 'cordova-plugin-device', pluginRef: 'device', repo: 'https://github.com/apache/cordova-plugin-device', platforms: ['Android', 'Browser', 'iOS', 'macOS', 'Windows'],

       }),

       Injectable()

   ], Device); return Device;

}(IonicNativePlugin));

通過(guò)生成的代碼可知,@Plugin({...}) 和 @Injectable() 最終會(huì)被轉(zhuǎn)換成普通的方法調(diào)用,它們的調(diào)用結(jié)果最終會(huì)以數(shù)組的形式作為參數(shù)傳遞給 __decorate 函數(shù),而在 __decorate 函數(shù)內(nèi)部會(huì)以 Device 類作為參數(shù)調(diào)用各自的類型裝飾器,從而擴(kuò)展對(duì)應(yīng)的功能。


9.2 裝飾器的分類

在 TypeScript 中裝飾器分為類裝飾器、屬性裝飾器、方法裝飾器和參數(shù)裝飾器四大類。


9.2.1 類裝飾器

類裝飾器聲明:


declare type ClassDecorator = <TFunction extends Function>(

 target: TFunction

) => TFunction | void;

類裝飾器顧名思義,就是用來(lái)裝飾類的。它接收一個(gè)參數(shù):


target: TFunction - 被裝飾的類

看完第一眼后,是不是感覺(jué)都不好了。沒(méi)事,我們馬上來(lái)個(gè)例子:


function Greeter(target: Function): void {

 target.prototype.greet = function (): void { console.log("Hello Semlinker!");

 };

} @Greeter class Greeting { constructor() { // 內(nèi)部實(shí)現(xiàn) }

} let myGreeting = new Greeting();

myGreeting.greet(); // console output: 'Hello Semlinker!';

上面的例子中,我們定義了 Greeter 類裝飾器,同時(shí)我們使用了 @Greeter 語(yǔ)法糖,來(lái)使用裝飾器。


友情提示:讀者可以直接復(fù)制上面的代碼,在 TypeScript Playground 中運(yùn)行查看結(jié)果。

9.2.2 屬性裝飾器

屬性裝飾器聲明:


declare type PropertyDecorator = (target:Object,

 propertyKey: string | symbol ) => void;

屬性裝飾器顧名思義,用來(lái)裝飾類的屬性。它接收兩個(gè)參數(shù):


target: Object - 被裝飾的類

propertyKey: string | symbol - 被裝飾類的屬性名

趁熱打鐵,馬上來(lái)個(gè)例子熱熱身:


function logProperty(target: any, key: string) { delete target[key]; const backingField = "_" + key; Object.defineProperty(target, backingField, {

   writable: true,

   enumerable: true,

   configurable: true }); // property getter const getter = function (this: any) { const currVal = this[backingField]; console.log(`Get: ${key} => ${currVal}`); return currVal;

 }; // property setter const setter = function (this: any, newVal: any) { console.log(`Set: ${key} => ${newVal}`); this[backingField] = newVal;

 }; // Create new property with getter and setter Object.defineProperty(target, key, { get: getter, set: setter,

   enumerable: true,

   configurable: true });

} class Person { @logProperty public name: string; constructor(name : string) { this.name = name;

 }

} const p1 = new Person("semlinker");

p1.name = "kakuqo";

以上代碼我們定義了一個(gè) logProperty 函數(shù),來(lái)跟蹤用戶對(duì)屬性的操作,當(dāng)代碼成功運(yùn)行后,在控制臺(tái)會(huì)輸出以下結(jié)果:


Set: name => semlinker Set: name => kakuqo

9.2.3 方法裝飾器

方法裝飾器聲明:


declare type MethodDecorator = <T>(target:Object, propertyKey: string | symbol,          

 descriptor: TypePropertyDescript<T>) => TypedPropertyDescriptor<T> | void;

方法裝飾器顧名思義,用來(lái)裝飾類的方法。它接收三個(gè)參數(shù):


target: Object - 被裝飾的類

propertyKey: string | symbol - 方法名

descriptor: TypePropertyDescript - 屬性描述符

廢話不多說(shuō),直接上例子:


function LogOutput(tarage: Function, key: string, descriptor: any) { let originalMethod = descriptor.value; let newMethod = function(...args: any[]): any { let result: any = originalMethod.apply(this, args); if(!this.loggedOutput) { this.loggedOutput = new Array<any>();

   } this.loggedOutput.push({

     method: key,

     parameters: args,

     output: result,

     timestamp: new Date()

   }); return result;

 };

 descriptor.value = newMethod;

} class Calculator { @LogOutput double (num: number): number { return num * 2;

 }

} let calc = new Calculator();

calc.double(11); // console ouput: [{method: "double", output: 22, ...}] console.log(calc.loggedOutput);

9.2.4 參數(shù)裝飾器

參數(shù)裝飾器聲明:


declare type ParameterDecorator = (target: Object, propertyKey: string | symbol,

 parameterIndex: number ) => void

參數(shù)裝飾器顧名思義,是用來(lái)裝飾函數(shù)參數(shù),它接收三個(gè)參數(shù):


target: Object - 被裝飾的類

propertyKey: string | symbol - 方法名

parameterIndex: number - 方法中參數(shù)的索引值

function Log(target: Function, key: string, parameterIndex: number) { let functionLogged = key || target.prototype.constructor.name; console.log(`The parameter in position ${parameterIndex} at ${functionLogged} has

   been decorated`);

} class Greeter {

 greeting: string; constructor(@Log phrase: string) { this.greeting = phrase;

 }

} // console output: The parameter in position 0  // at Greeter has been decorated

十、#XXX 私有字段

在 TypeScript 3.8 版本就開始支持 ECMAScript 私有字段,使用方式如下:


class Person {

 #name: string; constructor(name: string) { this.#name = name;

 }


 greet() { console.log(`Hello, my name is ${this.#name}!`);

 }

} let semlinker = new Person("Semlinker");


semlinker.#name; //     ~~~~~ // Property '#name' is not accessible outside class 'Person' // because it has a private identifier.

與常規(guī)屬性(甚至使用 private 修飾符聲明的屬性)不同,私有字段要牢記以下規(guī)則:


私有字段以 # 字符開頭,有時(shí)我們稱之為私有名稱;

每個(gè)私有字段名稱都唯一地限定于其包含的類;

不能在私有字段上使用 TypeScript 可訪問(wèn)性修飾符(如 public 或 private);

私有字段不能在包含的類之外訪問(wèn),甚至不能被檢測(cè)到。

10.1 私有字段與 private 的區(qū)別

說(shuō)到這里使用 # 定義的私有字段與 private 修飾符定義字段有什么區(qū)別呢?現(xiàn)在我們先來(lái)看一個(gè) private 的示例:


class Person { constructor(private name: string){}

} let person = new Person("Semlinker"); console.log(person.name);

在上面代碼中,我們創(chuàng)建了一個(gè) Person 類,該類中使用 private 修飾符定義了一個(gè)私有屬性 name,接著使用該類創(chuàng)建一個(gè) person 對(duì)象,然后通過(guò) person.name 來(lái)訪問(wèn) person 對(duì)象的私有屬性,這時(shí) TypeScript 編譯器會(huì)提示以下異常:


Property 'name' is private and only accessible within class 'Person'.(2341)

那如何解決這個(gè)異常呢?當(dāng)然你可以使用類型斷言把 person 轉(zhuǎn)為 any 類型:


console.log((person as any).name);

通過(guò)這種方式雖然解決了 TypeScript 編譯器的異常提示,但是在運(yùn)行時(shí)我們還是可以訪問(wèn)到 Person 類內(nèi)部的私有屬性,為什么會(huì)這樣呢?我們來(lái)看一下編譯生成的 ES5 代碼,也許你就知道答案了:


var Person = /** @class */ (function () { function Person(name) { this.name = name;

   } return Person;

}()); var person = new Person("Semlinker"); console.log(person.name);

這時(shí)相信有些小伙伴會(huì)好奇,在 TypeScript 3.8 以上版本通過(guò) # 號(hào)定義的私有字段編譯后會(huì)生成什么代碼:


class Person {

 #name: string; constructor(name: string) { this.#name = name;

 }


 greet() { console.log(`Hello, my name is ${this.#name}!`);

 }

}

以上代碼目標(biāo)設(shè)置為 ES2015,會(huì)編譯生成以下代碼:


"use strict"; var __classPrivateFieldSet = (this && this.__classPrivateFieldSet)

 || function (receiver, privateMap, value) { if (!privateMap.has(receiver)) { throw new TypeError("attempted to set private field on non-instance");

   }

   privateMap.set(receiver, value); return value;

}; var __classPrivateFieldGet = (this && this.__classPrivateFieldGet)

 || function (receiver, privateMap) { if (!privateMap.has(receiver)) { throw new TypeError("attempted to get private field on non-instance");

   } return privateMap.get(receiver);

}; var _name; class Person { constructor(name) {

     _name.set(this, void 0);

     __classPrivateFieldSet(this, _name, name);

   }

   greet() { console.log(`Hello, my name is ${__classPrivateFieldGet(this, _name)}!`);

   }

}

_name = new WeakMap();

通過(guò)觀察上述代碼,使用 # 號(hào)定義的 ECMAScript 私有字段,會(huì)通過(guò) WeakMap 對(duì)象來(lái)存儲(chǔ),同時(shí)編譯器會(huì)生成 __classPrivateFieldSet 和 __classPrivateFieldGet 這兩個(gè)方法用于設(shè)置值和獲取值。

藍(lán)藍(lán)設(shè)計(jì)www.73404.com.cn )是一家專注而深入的界面設(shè)計(jì)公司,為期望卓越的國(guó)內(nèi)外企業(yè)提供卓越的UI界面設(shè)計(jì)、BS界面設(shè)計(jì) 、 cs界面設(shè)計(jì) 、 ipad界面設(shè)計(jì) 、 包裝設(shè)計(jì) 、 圖標(biāo)定制 、 用戶體驗(yàn) 、交互設(shè)計(jì)、 網(wǎng)站建設(shè) 平面設(shè)計(jì)服務(wù)

日歷

鏈接

個(gè)人資料

存檔

主站蜘蛛池模板: 国产欧美一区二区精品性色 | 国产精彩视频在线观看 | 欧美日韩国产成人在线 | 视频福利一区 | 日一本二本三本在线2021 | 亚洲美女性生活 | 乱lun合集在线观看视频 | 成年人网站免费视频 | 亚洲精品中文字幕乱码三区 | 日本国产忘忧草一区在线 | 日本大胆人体视频 | 一级国产航空美女毛片内谢 | 国产成人av一区二区三区不卡 | 国产毛片一区二区精品 | 91午夜在线 | 一级生性活片免费视频片 | 800av在线播放| 欧美不卡一区二区三区 | 女人毛片视频 | 4438ⅹ亚洲全国最大色丁香 | 亚洲aⅴ精品一区二区三区91 | 国产在线精品国自产拍影院同性 | 国产不卡视频一区二区三区 | 天堂网传媒| 一级黄色短片 | 国产伦理网站 | 国产精品一区二区6 | 中文天堂在线资源 | 久草福利在线 | 亚洲国产精品综合久久网络 | 亚洲女欲精品久久久久久久18 | 国产精品毛片在线完整版 | 亚洲黄色成人 | 成人做爰视频www网站小优视频 | 国产成人无码午夜视频在线观看 | 毛片免费视频在线观看 | 国产 国语对白 露脸 | 国产露脸系列magnet | 精品国产一区二区三区av 性色 | 久久久久久久久久国产精品 | 91超碰人人| 朝鲜美女黑毛bbw | 欧美日韩精品在线 | 高潮av在线 | 在线精品国产一区二区三区 | 久久精品夜夜夜夜夜久久 | 欧美精品第三页 | 中国丰满少妇人妻xxx性董鑫洁 | 亚洲已满18点击进入在线看片 | 日韩一区二区三区免费视频 | 国产做受蜜臀 | 青娱乐青青草 | 拍拍拍产国影院在线观看 | 精品精品欲天堂导航 | 成年人的视频网站 | 亚洲色欲久久久久综合网 | 伊伊人成亚洲综合人网香 | 91网址在线观看 | 手机在线中文字幕 | 国产成人福利av综合导航 | 2018天天拍拍天天爽视频 | 国产偷亚洲偷欧美偷精品 | caoporon成人超碰公开网站 | 999亚洲欲妇 | 在线无码免费的毛片视频 | 久久aaaa片一区二区 | 羞羞答答国产xxdd亚洲精品 | 中文字幕在线网址 | 精品在线视频一区二区三区 | 久久久精品午夜免费不卡 | 亚洲午夜精品久久久久久人妖 | 玩弄人妻少妇精品视频 | 丰满双乳峰白嫩少妇视频 | 少妇做爰免费视频了 | 51成人网 | 中文字幕视频网站 | 亚洲男人的天堂在线 | 强制高潮xxxxhd日本 | 超碰在线伊人 | 色婷婷国产精品久久包臀 | 天天综合天天 | 欧美中文在线视频 | 青青青久久久 | 国产精品内射后入合集 | 国产www精品 | 北京富婆泄欲对白 | 久久久久久久久嫩草精品乱码 | 4399理论片午午伦夜理片 | 国产香港明星裸体xxxx视频 | 一级片在线免费看 | 亚洲精品网站日本xxxxxxx | 97成人在线观看 | 中文字幕日韩精品一区 | 日韩中文字幕免费在线观看 | 人妻换人妻a片爽麻豆 | 蜜桃av抽搐高潮一区二区 | 黄色激情小说网站 | 可以免费看毛片的网站 | 国产91勾搭技师精品 | 男女激情麻豆入口 | 在线天堂av| 日韩aⅴ在线观看 | 快好爽射给我视频 | 亚洲aⅴ欧洲av国产综合图片 | 9久9久9久女女女九九九一九 | 亚洲一区二区三区麻豆 | 无码毛片视频一区二区本码 | 午夜久久久久久久久 | 国产午夜伦鲁鲁 | 日韩女优在线观看 | 久草资源在线视频 | 国产美女在线观看免费 | 亚洲熟熟妇xxxx | 欧美毛茸茸 | 韩国一区二区三区美女美女秀 | 欧美成人性生交大片免费看 | 国产精品视频网 | 亚洲综合国产精品 | 国产免费无遮挡吸奶头视频 | 67194成人手机在线 | 中文精品在线 | 黄色国产一级 | 加勒比一本heyzo高清视频 | 91精品国产91久久久 | 久久999 | 免费毛片视频 | 日本a免费 | wwwcom捏胸挤出奶 | 成年人免费视频网站 | 免费看av的网址 | jlzzjlzz欧美大全 | a级特黄视频 | 久久精品一区二 | 国产天堂亚洲 | 国产精品综合在线 | 欧美精品一区二区三区一线天视频 | 777久久久精品一区二区三区 | 免费在线成人网 | 国产伦精品免编号公布 | 午夜伦全在线观看 | 久久免费播放 | 日韩成人av免费在线观看 | 在线精品亚洲一区二区佐佐木明希 | 天天草视频 | 十八女人国产毛毛片视频 | 日本少妇色视频 | 国产高清在线精品 | 老头糟蹋新婚少妇系列小说 | 少妇午夜啪爽嗷嗷叫视频 | 国产真实乱对白精彩 | av网站在线免费观看 | 国产男女猛烈无遮挡a片漫画 | 亚洲自偷自偷在线成人网站传媒 | 午夜精品一区二区三区aa毛片 | 欧美bbw另类xoxoxo | 亚洲国产精品999 | 网站国产| 粉嫩91精品久久久久久久99蜜桃 | 黄a无码片内射无码视频 | 亚洲爆乳精品无码一区二区 | aa视频免费在线观看 | 成人久久大片91含羞草 | 成人做爰高潮片免费视频美国 | 草草福利影院 | 西西午夜无码大胆啪啪国模 | 长篇乱肉合集乱500小说日本 | 蜜桃视频插满18在线观看 | 欧美成人自拍 | 天天干天天干天天干 | 色哟哟免费 | 狠狠色图片| 国产青青视频 | 国产乱肥老妇女精品视频网站 | 67194熟妇人妻欧美日韩 | 青青草精品在线视频 | 免费大片av手机看片高清 | 精品成人在线 | 久久一级免费视频 | 久久精品亚洲7777影院 | 蜜桃视频在线观看免费视频网站www | 青青视频二区 | 成人久久久 | 国产精品理伦片 | 一级做a爰片久久毛片a | 五月开心网| 成人夜视频 | 91嫩草国产露脸精品国产 | av色欲无码人妻中文字幕 | 欧日韩不卡在线视频 | 亚洲成av人片一区二区密柚 | 亚洲色成人网一二三区 | 国产99在线 | 中文 | 一级黄色a毛片 | 国产欧美视频在线播放 | 网站一区二区 | 天天爱天天射 | 欧美精品一区二区三区在线 | 国产情侣一区二区 | 俺也去av| 欧美小视频在线观看 | 亚洲综合社区 | 久久久久网站 | 精品国产乱码久久久久久久 | 10000部拍拍拍免费视频 | 夜夜激情网 | 国产精品suv一区二区69 | 欧美级毛片 | 女人下边被添全过视频 | 狠狠干在线| 久久先锋男人av资源网站 | 精品一区二区三区无码免费直播 | 巨大乳做爰视频在线看 | 99久久亚洲精品 | 干干人人 | 亚洲欧美日韩国产成人一区 | 高大丰满毛茸茸xxx性 | 亚洲日韩精品a∨片无码加勒比 | 色播av在线 | 寂寞少妇让水电工爽了视频 | 婷婷黄色网 | 一级特黄色 | 女人精69xxx免费观 | 久久99精品久久久久久无毒不卡8 | 永久免费的av在线电影网无码 | 九九精品视频在线 | 欧美交换配乱吟粗大 | 美女扒开大腿让男人桶 | 特级做a爰片毛片免费看 | 免费黄色在线播放 | 一本色道久久亚洲精品加勒比 | 国产精品久久久久久久久久免费 | 国产视频91在线 | 中国女人性猛交 | 久久午夜剧场 | 久久综合亚洲鲁鲁五月久久 | 成人无码网www在线观看 | 国产成人综合精品 | 91免费成人 | 国产精品男同 | 色麻豆国产原创av色哟哟 | 丰满岳跪趴高撅肥臀尤物在线观看 | 制服丝袜手机在线 | 国产又色又爽又黄的 | 大又大粗又爽又黄少妇毛片 | 国产午夜精品久久 | 日韩欧美国产精品 | 亚洲第一页综合 | 97婷婷大伊香蕉精品视频 | 欧美性插b在线视频网站 | 日韩成人无码一区二区三区 | 天堂视频在线 | 欧美精品123 | 夜色伊人 | 山东熟女啪啪哦哦叫 | 日本网站在线免费观看 | 正在播放一区 | 久久久午夜影院 | 中文字幕在线网 | 公妇乱淫真实生活 | 国产亚洲无线码一区二区 | 国产欧美日韩精品在线 | 中文字幕精品久久久久人妻红杏ⅰ | 日韩欧美视频 | 韩国白嫩粉嫩嫩嫩模美女视频 | www青青操| 国产欧美日韩在线在线播放 | 韩国三级做爰视频 | 亚洲精品69 | 久久丫精品忘忧草西安产品 | 亚洲第一页在线观看 | 波多一区二区 | zzijzzijzzij亚洲人| 久久爽精品区穿丝袜 | 亚洲专区欧美 | 夜夜爽夜夜叫夜夜高潮漏水 | 亚洲网站在线播放 | 大胸喷奶水www视频妖精网站 | 性一爱一性一乱 | 久久久久久亚洲精品中文字幕 | 99在线观看精品视频 | 欧美成人aaa | 久久99精品久久久久久牛牛影视 | 日韩欧美一区二区三 | 国产一区第一页 | 日本特黄一级大片 | 日韩亚洲欧美中文高清在线 | 国产伦久视频免费观看 视频 | 99久久免费精品国产男女高不卡 | 男女爱爱好爽视频免费看 | 少妇婷婷 | 免费日本黄色网址 | 国产精品v欧美精品 | 亚洲欧洲日韩一区二区三区 | 区美成人aaaaa | 深夜啪啪 | 亚洲综合久久久久 | 久久一区二区三 | 亚洲综合另类小说色区 | 国产精品wwwwww| 韩国三级hd中文字幕叫床 | 77777五月色婷婷丁香视频 | 国产成人精品综合久久久 | 窝窝午夜色视频国产精品破 | 精品国产乱码久久久久久口爆网站 | 小芸的放荡日记高h | 精品小视频在线观看 | 97超在线| 污网站在线播放 | 日屁视频 | 中文字幕日韩视频 | 一级片特级片 | 免费的黄色毛片 | 亚州av网站 | 无码av中文一区二区三区桃花岛 | 亚洲日产精品一二三区 | 国产二区精品视频 | 国产精品久久久天天影视 | 精品久久久久久久免费人妻 | 欧美日韩精品一区二区在线视频 | 国产人与禽zoz0性伦 | 亚洲久久色 | 国产高清视频网站 | 欧美精品1区2区3区 欧美精品91爱爱 | 99热这里只有精品3 99热这里只有精品4 | 中文字幕精品久久久久人妻红杏ⅰ | 91天天综合 | 国产精品久久久久精 | 国产a做爰全过程片 | 男女深夜福利 | 欧美第一页草草影院 | 在线亚洲网站 | 欧美日韩免费做爰视频 | 麻豆福利影院 | 韩日一区二区三区 | 国产专区在线 | 操老女人视频 | 天天躁日日躁狠狠躁一区 | 亚洲欧美日韩一区在线观看 | 国产精品福利网 | 少妇性荡欲视频 | 亚洲第二色 | 蜜臀av性久久久蜜臀av流畅 | 国产精品激情在线观看 | 免费麻豆国产一区二区三区四区 | 国产婷婷色一区二区三区在线 | 国产小视频网站 | 青青青视频免费观看 | 91精品国产欧美一区二区 | a级大片在线观看 | 色爱精品视频一区二区 | 国产午夜精品一区二区 | 吃奶呻吟打开双腿做受动态图 | 国产精品第十页 | 日韩色片在线 | 久一精品| 欧美成人精品三级在线观看播放 | 亚洲男男无套gv大学生 | 欧美影院成年免费版 | 精品欧美乱码久久久久久 | 免费看男女做爰爽爽视频 | 国产精品一v二v在线观看 | 欧美性插动态图 | 非洲黄色一级片 | 国产麻豆一精品一av一免费 | 特级毛片aaa | 国产精品青青草 | 叼嘿视频在线免费观看 | 日韩一级在线观看视频 | 特级西西444ww大胆视频 | 中文字幕日韩欧美一区二区三区 | 亚洲精品.www | 成人区精品一区二区 | 亚洲天堂avav | 国产精品成人一区二区三区夜夜夜 | 一性一交一摸一黄按摩精油视频 | 香蕉视频免费在线 | 亚洲春色综合另类网 | 大地资源网第二页免费观看 | 国产又黄又爽又刺激的免费网址 | 2022精品国偷自产免费观看 | 丝袜美腿一区二区三区动态图 | 天天狠天天插天天透 | 伊人激情 | 欧美日韩一区二区在线观看 | 女神西比尔av在线播放 | 成人一区在线观看 | 伊人久久大香网 | 国产伦理一区二区 | 亚洲中文字幕无码中文字 | 女女同性女同区二区国产 | 国产毛片毛片精品天天看软件 | 国产黄色片在线 | 波多野结衣亚洲一区二区 | 脱裤吧av导航 | 一区二区小视频 | 久艹在线观看 | 免费人成又黄又爽又色 | a天堂视频在线观看 | 欧美精品久久久久久久多人混战 | 久草中文在线视频 | 色呦呦国产精品 | 天天操狠狠 | 国产 精品 自在 线免费 | 在线亚洲网站 | 久久久久99精品成人片直播 | 国产极品粉嫩 | 97视频在线免费观看 | 久久精品国产一区二区三区不卡 | 就是色| 欧洲美女x8x8免费视频 | 午夜亚洲国产理论片一二三四 | 中文在线观看视频 | 成人在线观看网址 | 久久青草免费视频 | av网站久久 | 亚洲自偷自偷图片 | 亚洲男人网 | 日韩欧美xxx| 777777777少妇流水视频 | 国产无在线观看软件 | 黄色片大全 | 四川丰满妇女毛片四川话 | 91蜜桃臀久久一区二区 | 女同三级bd高清在线播放 | 国产综合日韩 | 中文字幕av高清片 | 精品一区免费 | 中国农民工hd自拍xxxx | 成人v| 免费在线观看黄色片 | 中文字幕日产无码 | 91成人入口| 大尺度做爰呻吟舌吻情头 | 精品无码一区二区三区不卡 | 动漫精品专区一区二区三区 | 老司机免费在线视频 | www.日本色| 国产特级毛片aaaaaa高清 | 国产精品福利视频导航 | 美女撒尿无遮挡网站 | 亚洲欧美日韩成人 | 极品妇女扒开粉嫩小泬 | 91av短视频 | 亚洲精品一区二区三区四区五区 | 找av导航| 欧美精品密入口播放 | 久久久久亚洲ai毛片换脸星大全 | 精品欧美一区二区精品久久久 | 美女张开腿黄网站免费下载 | 肉大捧一进一出免费视频 | 天天色综合色 | 少妇毛茸茸bbw高清 少妇免费毛片久久久久久久久 | 伊人久久无码中文字幕 | 美女疯狂连续喷潮视频 | 在线观看免费视频麻豆 | 国产在线欧美日韩 | 中国人与牲禽动交精品 | 免费簧片在线观看 | 亚洲骚片 | 91美女福利视频 | 天天干天天操天天爽 | 中文字幕乱码一区二区三区四区 | 欧美日韩综合网 | 国产福利片在线观看 | 欧美俄罗斯40老熟妇 | 亚洲精品sm一区二区 | 欧美另类激情 | 精品免费国产一区二区 | 大伊人网 | 又黄又爽又色的视频 | 久久久久久91亚洲精品中文字幕 | 成人毛片在线视频 | 日韩精品一区二区三区亚洲综合 | 色月婷婷 | 欧美三区视频 | 九九亚洲精品 | 亚洲天堂免费视频 | 在线一区二区三区视频 | 影音先锋男人av鲁色资源网 | 欧美人妻一区二区三区 | 狠狠婷婷综合久久久久久 | 精品亚洲午夜久久久久91 | 日韩一卡二卡 | 成年女人色毛片 | 国产一区二区免费视频 | 色哟哟一区二区三区精华液 | 亚洲精品国产精品国自产在线 | 色噜噜狠狠色综合中国 | 手机免费av | 91精品国产黑色瑜伽裤 | 精品国模一区二区三区 | 中文字幕在线免费播放 | 日韩a∨精品日韩在线观看 免费特级黄毛片 | 色一情一乱一伦 | 亚洲色偷偷av男人的天堂 | 国产精品va在线播放 | 久久精品麻豆日日躁夜夜躁 | 热の综合热の国产热の潮在线 | 欧美日韩免费在线 | 国产51人人成人人人人爽色哟哟 | 91久久久久国产一区二区 | 日韩精品一区二区av在线 | 日本边添边摸边做边爱的网站 | 性高朝久久久久久久 | 天天色天天色天天色 | 毛片无遮挡高清免费 | 日本丰满白嫩大屁股ass | 成人无码网www在线观看 | 无人码一区二区三区视频 | 日韩美女久久 | 一本大道加勒比免费视频 | 国产91丝袜在线播放0 | 国产又粗又猛又大爽老大爷 | 欧美黑人性xxx | 99国产精品久久久久久 | 亚洲精品激情视频 | 亚洲网站免费观看 | 国内精品久久久久精免费 | 免费成人高清在线视频 | 久久久久无码中 | eeuss一区二区 | 亚洲va欧美va国产综合定档 | 免费特级黄毛片 | 精品国偷自产在线视频 | 亚洲天堂视频一区 | 综合精品一区 | 成人性生交天码免费看 | 4h虎影库永久 | www.九色91| 粉嫩av一区二区三区四区五区 | 性欧美长视频免费观看不卡 | 亚洲一二三不卡 | 成人羞羞视频在线看网址 | 欧美整片sss | 亚洲不卡在线播放 | 农村寡妇一区二区三区 | 婷婷五月综合色中文字幕 | 欧美日韩一卡二卡三卡 | 香蕉视频一区二区三区 | 亚洲女初尝黑人巨高清 | 亚洲三级在线看 | 国产欧美一区二区白浆黑人 | 377p粉嫩日本欧洲色噜噜 | 亚州三级 | 日韩欧美一区二区三区四区五区 | 国产免费破外女真实出血视频 | 亚洲天堂资源网 | 亚洲无限看 | 国产一区网址 | 午夜精品久久久内射近拍高清 | 久久亚洲熟女cc98cm | 国内精品久久久久久中文字幕 | 国产无套粉嫩白浆内谢 | 黄色小网站在线观看 | 国产女主播视频一区二区 | 欧美成人免费一区二区 | 色婷婷中文 | 欧美三日本三级少妇三99r | 日韩特黄特色大片免费视频 | 国产一区二区三区免费视频 | 国精品人妻无码一区免费视频电影 | 在线免费观看av网址 | 视频一区在线观看 | 成人v| 精品女同一区二区三区在线播放 | 精品国产一区二区三区久久影院 | 日韩夜夜高潮夜夜爽无码 | 黄色福利 | 久久精品视频播放 | 久久久噜久噜久久综合 | 精品国产依人香蕉在线精品 | 国产交换配乱淫视频a | 日本黄色激情视频 | 欧美日韩精品 | 天天综合天天干 | 日日摸夜夜添夜夜添国产精品 | 亚洲精品蜜桃久在线 | 国产精品久久久久久久天堂 | 欧美亚洲一级片 | 国产一区xxx | 国产精品三级久久久久三级 | av在线手机观看 | 香港三日本三级少妇少99 | 最新日韩视频 | 香港三级澳门三级人妇99 | 91综合精品 | 久久精品视频免费 | 欧美黄网站在线观看 | 国产情侣草莓视频在线 | 日韩精品亚洲人成在线观看 | 亚洲成人在线视频观看 | 欧美大色 | 国产成人一区二区三区在线 | 国产精品福利在线播放 | 男生女生操操操 | 亚洲精品国产精品乱码不卡 | 午夜寂寞福利 | 欧美精品乱码99久久蜜桃 | 亚洲欧美日韩国产成人精品影院 | 国产一线二线在线观看 | 懂色aⅴ精品一区二区三区蜜月 | 国产亚洲一区在线 | 四虎国产成人精品免费一女五男 | 中文字幕免费 | 久久久久久久久久久久中文字幕 | 亚洲国产精品成人女人久久 | 亚洲视频网站在线观看 | 亚洲欧美日韩国产精品一区二区 | 伊人天天干 | 在线观看av网| 国产精品无码一区二区三区免费 | 狠狠色欧美亚洲狠狠色www | 久久女同| 国产一区在线视频观看 | 黑人狂躁日本妞一区二区三区 | 福利视频在线播放 | 亚洲男人最新版本天堂 | 欧美在线另类 | 中文字幕 国产 | 男女裸交免费无遮挡全过程 | 91欧美日韩国产 | 久久亚洲精品国产 | 日本性高潮视频 | 精品人妻伦九区久久aaa片69 | 久久综合国产伦精品免费 | 黄色小视频免费 | 探花视频在线免费观看 | 精品国产一区二区三区不卡 | 毛多水多www偷窥小便 | 秋霞一区| 久热免费在线视频 | 51国偷自产一区二区三区的来源 | 国产成人小视频在线观看 | 成人毛片基地 | 久久精品中文字幕免费 | 无遮挡色视频免费观看 | 亚洲高清av在线 | 亚洲欧美综合区自拍另类 | 国产精品午夜8888 | 黄色片中文字幕 | 新久草视频 | 日本免费网址 | 夜夜爽一区二区三区 | 欧美最猛黑人xxxx黑人猛交 | 91精品国产乱码久久桃 | 国产xxxx裸体xxx免费 | 另类 综合 日韩 欧美 亚洲 | 上海富婆spa又高潮了 | 精品二区在线 | 中文字幕日本最新乱码视频 | 国产一级激情 | 国产视频资源在线观看 | 高潮久久久久久久久 | 看久久| 军人粗大的内捧猛烈进出视频 | 久久一本久综合久久爱 | 骚虎av在线 | 亚洲欧洲中文日韩av乱码 | 黄色的毛片 | 亚洲看片lutube在线入口 | 国产又粗又大又黄 | 四季av中文字幕一区 | 亚洲视频区 | 日日夜夜精品视频免费 | 国产精品乱码人人做人人爱 | 天天综合色 | 色噜噜av亚洲色一区二区 | 国产精品你懂得 | 精品人妻无码一区二区色欲产成人 | 老牛嫩草一区二区三区消防 | 久久久亚洲精品一区二区三区 | 亚洲精品久久久久久宅男 | 森林影视官网在线观看 | 伊人精品在线观看 | 少妇激情偷人三级 | 成人性生交免费大片 | 看黄色a级片 | 欧美特级毛片 | 99精品欧美一区二区三区综合在线 | 国产女人十八毛片 | jlzzjizz亚洲学生好多水 | 国产精品久久久免费观看 | 亚洲熟女乱色综合亚洲小说 | 羞羞视频网站在线观看 | 欧美性猛交乱大交丰满 | 国产日产欧洲无码视频 | 天堂久久精品 | 深夜福利免费在线观看 | 欧美视频一区在线 | 超碰.com| 国产伦理一区二区三区 | 国内精品视频一区二区三区 | 深夜久久| 51ⅴ精品国产91久久久久久 | 国产视频久久久久久 | 国产精品女同一区二区 | 国产口爆吞精在线视频2020版 | 中文字幕网站在线观看 | 久久亚洲sm情趣捆绑调教 | 99热久久免费频精品18 | 国产一区二区精品在线 | 亚洲精品综合欧美二区变态 | 曰本女人牲交全视频播放 | 中文字幕免费在线观看视频 | 未满十八18禁止午夜免费网站 | 成人毛片100部免费看 | 亚洲第一女人av | 欧美精品91爱爱 | 精品在线观看一区 | 免费夜色污私人影院在线观看 | 国产一区二区精华 | 免费高清a级南片在线观看 免费高清成人 | 国产精品高潮视频 | 欧美精品影院 | 69亚洲乱 | 国产亚洲精品久久久久久久久动漫 | 97久久精品国产一区二区三区 | 天天操天天操天天操 | 久久久毛片 | h色视频在线观看 | 久国久产久精永久网页 | 精品久久久久久久久久久 | 丁香婷婷网 | 亚洲国产成人一区 | 国产精品乱码一区二区三区 | 大片免费在线观看视频 | 国产淫语对白粗口video | 中文字幕日韩精品有码视频 | 亚洲午夜在线观看 | 狠狠色丁香婷婷久久综合五月 | 日韩在线国产精品 | 免费中文字幕在线观看 | 日本三级免费 | 欧美人禽杂交狂配 | h片在线 | 久久精品a一国产成人免费网站 | yzzavcom免费观看视频 | 情侣做性视频在线播放 | 国产精品丝袜一区二区三区 | 91精品乱码久久蜜桃 | 亚洲精品美女久久久久99 | 日韩av一区二区在线播放 | 国产黄a三级 | 波多野结衣一区二区三区四区 | а√天堂8资源中文在线 | 四虎1515hh海外永久免费 | 久久精品视频在线看99 | 台湾佬中文字幕 | 亚洲人网 | av天天在线 | 国产黄色在线免费看 | 五月网 | 真实的国产乱xxxx在线91 | 一区二区精 | 日韩一级影片 | 日韩中文字幕免费看 | 成人国产精品免费 | 永久天堂网av手机版 | 97se亚洲| 国产精品久久久久久久久久10秀 | fc2成人免费人成在线观看播放 | 亚洲日本va中文字幕 | 精品久久久久久无码免费 | 无码中文av有码中文a | 欧美aaaaaaaaaa| 国产美女无遮挡永久免费 | 久久午夜夜伦鲁鲁片免费无码影视 | 视频精品一区二区三区 | 亚洲国产精品日本无码网站 | 日韩欧美超碰 | 波多野结衣电车痴汉 | 国产精品久久久久久久久久辛辛 | 隔壁邻居是巨爆乳寡妇 | 久久9966| 中文字幕av一区二区 | 丰满少妇又爽又紧又丰满在线观看 | 女人夜夜春精品a片 | 欧美成人一区二区三区高清 | 91黑丝视频 | 亚洲欧美日韩网站 | 亚洲激情片 | 中文字幕乱码在线蜜乳欧美字幕 | 4438ⅹ亚洲全国最大色丁香 | 精品在线免费播放 | 亚洲国产精品ⅴa在线观看 天堂中文在线资源 | 在线亚洲不卡 | 欧美粗暴jizz性欧美20 | 思热99re视热频这里只精品 | 欧美乱大交做爰xxxⅹ性3 | 国产欧美精品一区二区色综合 | 亚洲欧洲无码一区二区三区 | 葵司av三级在线看 | 男女做爰全过程免费视频播放 | 成人精品一区二区三区中文字幕 | 成人欧美视频在线观看 | 亚洲国产精品久久久天堂 | 青青草超碰 | ass东方小嫩模pics | 77777亚洲午夜久久多人 | 国产精选在线 | 黄色一及毛片 | 黄色suv视频 | 国产精品xx| 成人免费毛片片v | 日本成人动漫在线观看 | 黑人巨大精品欧美一区二区小视频 | 亚洲看片lutube在线观看 | 精品视频一区二区三区四区 | 在线天堂中文www视软件 | 久久99精品久久久久久狂牛 | 看全色黄大色大片免费久久 | 乌克兰极品少妇ⅹxxx做受 | 色妞在线| 成年女人永久免费观看视频 | 全国露性器r级最禁片 | 国产中文字幕乱人伦在线观看 | 绯色av一区二区三区在线观看 | 强行糟蹋人妻hd中文字幕 | 成人国产片女人爽到高潮 | 97国产精品理伦影院 | 好吊妞在线观看 | 欧美一区二区国产 | 99精品免费久久久久久久久 | 香港三级日本三级妇三级 | 一级成人免费视频 | 久久久久久久久久久国产 | 成人欧美一区二区三区1314 | 婷婷六月天在线 | 性与爱午夜视频免费看 | 99久久精品久久久久久动态片 | 九热在线 | 国产精品第七页 | 久久久亚洲裙底偷窥综合 | 欧美又粗又深又猛又爽啪啪九色 | 超碰免费公开 | 久久这里只精品 | 亚洲日本网站 | 国产无遮挡猛进猛出免费软件 | 伊人久久爱| 日本在线视频二区 | 亚洲人成电影在线观看影院 | 一级不卡 | 日本男女啪啪 | 日本爽快片100色毛片 | 国产高跟黑色丝袜在线 | 在线看成人| 97在线看| 97久久人人超碰国产精品 | 一本色道久久综合狠狠躁篇怎么玩 | 欧美三级日本 | 欧美 日韩 成人 | 国产精品久久久久久久9999 | 蜜臀久久精品99国产精品日本 | 亚洲精品久久久久久动漫器材一区 | 麻豆国产露脸在线观看 | 亚洲欧美va天堂人熟伦 | 一本大道久久a久久精品综合1 | 嫩草综合 | 国产精品欧美一区二区 | 久久人爽人人爽人人片av | 中文有码在线播放 | 久久久久久久久久久久久久久久久 | 九九热在线视频观看这里只有精品 | 国产又色又爽又黄的 | 亚洲一区二区三区四 | 女厕厕露p撒尿八个少妇 | 国产口语对白老妇 | 无码专区一ⅴa亚洲v天堂 | 玖玖爱这里只有精品视频 | 国产精品96久久久久久又黄又硬 | 亚洲色无码专区在线观看 | 18禁在线永久免费观看 | 国精产品99永久一区一区 | 免费毛片网站在线观看 | 性视频网站免费 | 国产高潮国产高潮久久久91 | 娇小性xxxxx极品娇小小说 | 一本色道久久99精品综合蜜臀 | 周妍希大尺度国产一区二区 | 国产精品视频一区二区免费不卡 | 国产亚洲精品久久久闺蜜 | 国产呻吟对白刺激无套视频在线 | 99精品偷自拍 | 欧美性xxxx在线播放 | 国产极品粉嫩 | 韩国三级hd中文字幕三义 | 91色漫| 中文永久免费观看 | 久久九九久久九九 | 老司机av福利 | 一区二区三区美女视频 | 在线国产区 | 一本一道dvd在线观看免费视频 | 亚洲一区二区三区视频 | 无码日韩人妻精品久久蜜桃 | 国产精品ⅴa有声小说 | 国产99在线 | 中文 | 狠狠色噜噜狠狠狠狠米奇777 | 伊人久久大香线蕉综合四虎小说 | 一起艹在线观看 | 成人福利在线观看 | 伊人av影院| 欧美一区 | 无套内谢大学处破女福利 | 在线国产中文字幕 | mm131美女久久精品美女图片 | 精品一区二区三区在线观看 | 亚洲国产成人精品女 | 黄色福利站 | 性做久久久久久久免费看 | 亚洲色欧美另类 | 天天干夜夜操视频 | 黑人巨大精品欧美一区二区桃花岛 | 国产黄色片在线播放 | 亚洲精品国产精 | 处破女处破av | 日韩亚洲在线观看 | 越南性xxxx精品hd | 亚洲成av人片久久 | 日本黄色免费网址 | xxxx69国产| 97超碰资源站| 成人羞羞视频在线观看 | 国产欧美在线观看不卡 | 色婷婷国产精品视频 | 青青草视频播放器 | 国产人妻一区二区三区四区五区六 | 亚洲v天堂| 国产精品精品久久久 | 99热热久久| 免费无码成人av片在线在线播放 | jizz教师| 免费黄色网址观看 | 国内外免费激情视频 | 欧美风情第一页 | 国产在线高清 | 精品99久久久 | 欧美黑人又粗又大的性格特点 | 91麻豆国产精品 | 欧美一区二区在线视频 | 亚洲九九夜夜 | 天天干天天操天天舔 | 欧美综合色区 | 精品免费国产一区二区 | 色婷婷欧美在线播放内射 | 国产精品美乳在线观看 | 夜色综合网 | 久久综合九色综合97网 | 亚洲精品沙发午睡系列 | 涩久久| 国内精品久久人妻互换 | 77777五月色婷婷丁香视频 | 国产精品爽爽v在线观看无码 | 久久天天躁狠狠躁夜夜免费观看 | 国产69精品久久久久777糖心 | 天天操狠狠操夜夜操 | 久久综合狠狠综合久久综合88 | 综合久久久久 | 啪啪在线观看 | 女人一级大片 | 影音先锋久久久久av综合网成人 | 五月综合在线 | 人人妻人人爽人人澡av | 人妻av无码一区二区三区 | 94av| 国产三级影院 | 亚洲国产wwwccc36天堂 | 精品国产乱码久久久久久精东 | 熟女视频一区二区在线观看 | av一级在线| 青青草视频网站 | 夜夜草 | 国产视频每日更新 | 亚洲成人免费影院 | 精品无码国产一区二区三区av | 日日噜噜夜夜狠狠久久av小说 | 另类一区二区三区 | 亚洲欧美日韩一区在线观看 | 黄色成人在线免费观看 | 国产大片网站 | 教师夫妇交换刺激做爰小说 | 亚洲欧美成人网 | av私库在线观看 | 国产精品99久久久 | 亚洲成成品牛牛 | 处破大全欧美破苞二十三 | 日本在线播放 | 亚洲精品乱码久久久久久金桔影视 | 免费看片免费播放国产 | 亚洲黄色在线观看 | 亚洲精品一区二区三区在线观看 | 裸体精品bbbbbbbbb | 午夜伦视频 | 男生女生羞羞网站 | 久久久观看 | 男人阁久久 | 免费国产裸体美女视频全黄 | 欧美特黄特色视频 | 久久久久无码精品国产app | 美丽的熟妇中文字幕 | 77777亚洲午夜久久多人 | 国产成人综合在线 | 秋霞成人午夜鲁丝一区二区三区 | 麻豆做爰免费观看 | 精品人妻无码一区二区三区换脸 | 午夜片在线 | 女色婷婷| 国产第100页 | 粉嫩av一区二区三区四区在线观看 | 疯狂撞击丝袜人妻 | 国产免费又色又爽粗视频 | 夜夜操av | 99国产欧美精品久久久蜜芽 | 全国男人的天堂网 | 无码av动漫精品一区二区免费 | 蜜臀av在线播放一区二区三区 | com国产| 成人久久久精品乱码一区二区三区 | 中文字幕天天躁日日躁狠狠躁免费 | 九九在线免费视频 | av大片免费 | 欧美日韩一区二区视频在线观看 | 巩俐性三级播放 | 91九色丨porny丨丰满6 | 国产va在线观看 | 91麻豆精品国产 | 丰满少妇在线观看bd | 99re在线播放 | 性讥渴的黄蓉与老汉 | 亚洲日韩乱码一区二区三区四区 | 国产在线视频一区二区董小宛性色 | 色婷婷美国农夫综合激情亚洲 | 懂色中文一区二区三区在线视频 | www亚洲天堂com | 三级三级三级a级全黄公司的 | 妇女bbbb插插插视频 | 色哟哟国产精品 | 国产午夜无码视频在线观看 | 亚洲精品久久久中文字幕痴女 | 国产成人精品免费看视频 | 免费福利av| 成人黄色在线视频 | 老司机67194精品线观看 | 人人人妻人人澡人人爽欧美一区 | 欧美午夜精品久久久久久浪潮 | 国产精品久久777777换脸 | 一二三四区无产乱码1000集 | asiass极品裸体女pics | 操丝袜美女视频 | 欧美黄色小说 | 波多野结衣在线网址 | 婷婷色六月天 | 国内激情 | 性女次台湾三级 | 和岳每晚弄的高潮嗷嗷叫视频 | 久久综合给合久久狠狠狠97色69 | 不卡的一区二区 | 欧美日韩一本 | 艳妇臀荡乳欲伦交换在线看 | 亚洲狠狠丁香综合一区 | 吃奶呻吟打开双腿做受动态图 | 五月婷婷狠狠干 | 天天骑天天干 | 欧美另类极品 | 亚洲国产一区久久yourpan | 中国农村一级片 | 成人性视频免费网站 | 国产精品高潮呻 | 伊人网国产 | 亚洲国产美女久久久久 | 欧美交换乱淫粗大 | 深田咏美在线x99av | 免费国产又色又爽又黄的网站 | 人人搞人人插 | 女人一级大片 | 亚洲国产成人无码av在线播放 | 国产女人18水真多18精品一级做 | 少妇真人直播免费视频 | 亚洲中文字幕无码一区二区三区 | 精品乱码一区二区三四区 | 久久久99国产精品免费 | 日韩精品一区二区午夜成人版 | 中文字幕无线精品亚洲乱码一区 | 欧美日激情日韩精品嗯 | 久久精品黄aa片一区二区三区 | 国产精品岛国久久久久 | 国产情侣一区二区三区 | 一个人看的日本hd免费 | 校园春色 亚洲色图 | 国产乡下妇女做爰视频 | 久久人人澡| 丰满白嫩欧洲美女图片 | 成人视品 | 东北女人毛多水多牲交视频 | 日韩不卡一二三区 | 亚洲另类无码专区丝袜 | 久久婷婷五月综合97色直播 | 精产国品一区二区三区四区 | 无码国产精品一区二区免费i6 | 精品乱子伦一区二区三区 | 午夜性色福利在线视频福利 | 欧美乱妇狂野欧美视频 | 91成人在线免费 | 性一交一性一色一性一乱 | 久久精品视频一区二区三区 | 亚洲国产成人va在线观看天堂 | 日韩欧美一区二区三 | 精品热久久 | 精品久久不卡 | 中国老妇淫片bbb | 我爱avav色aⅴ爱avav | 中文字幕5566| 97精产国品一二三产区区别视频 | 99久久婷婷国产综合精品青草免费 | 日日摸天天添天天添破 | 四川话毛片少妇免费看 | 日韩成人精品在线 | 成人性生生活性生交视频 | 椎名空在线播放 | 日日日网站 | 成人免费视频国产免费麻豆 | 国产精品999视频 | 亚洲视频a| 九一精品在线 | 少妇乳大丰满太紧 | 中国三级毛片 | 一色屋精品久久久久久久久久 | 免费欧美一级片 | 99精品一区二区三区无码吞精 | 久久久人成影片免费观看 | 人人妻人人澡av天堂香蕉 | 久久午夜私人影院 | 日韩精品你懂的 | 国产真实精品久久二三区 | 青草青草视频2免费观看 | 国产黄色av网站 | 中文字幕日本最新乱码视频 | 五月天堂网 | 在线观看国产精品普通话对白精品 | 天天夜碰日日摸日日澡性色av | 久久香蕉国产线熟妇人妻 | 成人午夜在线视频 | 国产精品乱码一区二区 | 亚欧成人在线 | 葵司有码中文字幕二三区 | 精品国产一区二区三区四 | 四虎一区二区 | 91精品国产成人观看 | 中文成人无字幕乱码精品区 | 综合婷婷 | 日本www高清 | 8888四色奇米在线观看 | 国产精品裸体一区二区三区 | 欧洲美熟女乱又伦av影片 | 免费涩涩网站 | 免费最爽乱淫无遮挡 | 国精品一区| 三级网站在线免费观看 | 最新毛片网 | 国产xx视频| 97人人模人人爽人人喊小说 | 国内揄拍国产精品人妻门事件 | zzz444成人天堂7777 | 日本人做爰大片免费网站 | 一区二区www| 久久精品丝袜高跟鞋 | 国产男女猛烈无遮挡 | 久久日本精品字幕区二区 | 日韩一级免费视频 | 国内精品久久久久久久影视蜜臀 | 青青热久免费精品视频在线播放 | 日韩精品一区二区三区亚洲综合 | 三级艳丽杨钰莹三级 | 国产一区二区三区久久 | 九九九九精品九九九九 | 国产成人片 | 夜夜激情网 | 久久99亚洲精品久久99果 | 亚洲人视频 | 玖玖爱国产 | 北京富婆泄欲对白 | 中文综合在线观 | 99热这里是精品 | www人人草| 国产一级二级三级在线观看 | 亚洲色视频 | 麻豆国产va免费精品高清在线 | 欧美最猛黑人xxxx黑人猛叫黄 | 国产99久久久国产精品免费高清 | 成年视频在线 | 亚洲狠狠婷婷综合久久久久图片 | 亚洲 美腿 欧美 偷拍 | 人妻少妇被粗大爽9797pw | 饥渴少妇色诱水电工 | 一级一片免费观看 | 超碰在线观看99 | 亚洲另类伦春色综合妖色成人网 | 天天爱天天做天天大综合 | 日日碰日日操 | 国产一区二区三区视频播放 | 另类 综合 日韩 欧美 亚洲 | 香港a级毛片 | 黄色在线观看国产 | 少妇三级全黄 | 欧洲中文字幕日韩精品成人 | 日韩av影片 | 欧美性受xxxx黑人xyx性 | 久久久影院| 一级肉体全黄裸片8822tv | 国产最新网址 | 国产97色 | 国产乱妇4p交换乱免费视频 | julia一区二区在线播放 | 欧美人与动人物牲交免费观看久久 | 国产97色在线 | 亚洲 | 欧美日韩国产图片 | 久草福利资源 | 么公的好大好硬好深好爽视频 | 日韩在线视频免费看 | 欧美中文视频 | 特级a做爰全过程片 | 久久国产资源 | 日本大乳高潮视频在线观看 | 国产韩国精品一区二区三区久久 | 国产美女在线播放 | 日本v片 | 欧美成人aaaaa | 精品久久久久久久久久久久久久 | 99视频精品全部免费免费观看 | 成人a视频| 水蜜桃色314在线观看 | 日本免费一区二区三区视频 | 国产欧美激情 | 国产一区二区片 | 中文字幕日产无码 | 超碰黑人 | 中文字幕日韩精品有码视频 | 精品国产亚洲一区二区三区 | 女同性69囗交 | 欧美精品乱人伦久久久久久 | 亚洲欧美色一区二区三区 | 亚洲精品午夜国产va久久成人 | 亚洲女则毛耸耸bbw 亚洲女子a中天字幕 | 国精品无码一区二区三区在线蜜臀 | 日本欧美一区二区三区在线播放 | 中国真实的国产乱xxxx | 男人天堂中文字幕 | 一级黄色大片 | 久久综合狠狠综合久久综合88 | 中文字幕亚洲乱码熟女在线萌芽 | 深夜av在线播放 | 中午字幕无线码一区2020 | 国产无套粉嫩白浆内精品 | 在熟睡夫面前侵犯我在线播放 | 亚洲 国产 另类 精品 专区 | 探花视频在线免费观看 | 国产精品久久久不卡 | 亚洲国产欧美日本视频 | 中文字幕在线资源 | 俺来也俺也啪www色 俺啪也 | 性生交大片免费看视频 | 美女国产在线 | 国产精品自拍第一页 | 99久久免费视频在线观看 | 久久岛国 | 美女网站在线永久免费观看 | 国产精品夜夜嗨视频免费视频 | 久久99国产综合精品 | 中国精品18videosex性中国 | 男女激情免费网站 | 国产网站一区 | 国产精品对白刺激久久久 | 亚洲免费永久精品 | 91在线视频免费看 | 午夜寂寞少妇aaa片毛片 | 日本三级韩国三级美三级91 | 夜鲁鲁鲁夜夜综合视频 | 国产黄色a级毛片 | 国产欧美一级片 | 粉嫩av一区二区三区四区免费 | 少妇与大狼拘作爱性a | 激情综合亚洲 | 中文字幕 国产精品 | 99精品成人| 亚洲xxxx18| 精品国产免费第一区二区三区 | 天天综合亚洲综合网天天αⅴ | 欧美乱色伦图片区 | 国产99久久久国产精品免费看 | 久久精品a一国产成人免费网站 | 国产太嫩了在线观看 | 看欧美一级片 | 欧美精品二区三区四区免费看视频 | 久久国产精品视频 | 国产69精品久久久久777 | 黄色小视频在线免费看 | 99热这里| 欧美一级淫片丝袜脚交 | 亚洲国产精品久久久久婷蜜芽 | 国产精品久久久久久久影院 | 国产精品推荐天天看天天爽 | 国产理论一区二区三区 | 美女黄视频在线观看 | 粉嫩av一区二区三区免费野 | 国产精品自拍在线 | 国产精品日韩欧美一区二区三区 | 台湾av在线播放 | 经典三级av在线 | 国产xxxx高清在线观看 | 久草视频福利 | 天天综合天天添夜夜添狠狠添 | 国产最猛黑人xxxxx猛交 | 亚洲乱亚洲乱 | 国产无套精品一区二区 | 大香伊人久久 | 色女生影院 | 久久一本久综合久久爱 | 神宫寺奈绪一区二区三区 | 国产日韩91| 黑人巨大精品欧美一区二区, | 少妇高潮喷潮久久久影院 | 亚洲国产精品久久久久爰色欲 | 黄色网络在线观看 | 国产黄色小说 | 爱爱免费视频网址 | 亚洲乱码国产乱码精品精大量 | 久久r精品 | 国产区在线观看视频 | 男女拍拍拍网站 | 国产区图片区小说区亚洲区 | 特级黄录像视频 | 国产欧美日韩一区二区加勒比 | 天堂中文字幕在线 | 免费午夜爽爽爽www视频十八禁 | 成人av小说 | 最新偷窥盗摄 | 狠狠色综合欧美激情 | 国产综合亚洲精品一区二 | 日韩av在线网站 | 日韩高清久久 | 久久在线视频 | 亚洲一二三四五 | 琪琪亚洲精品午夜在线 | 精品一区欧美 | 欧美日批 | 另类老妇奶性生bbwbbw | 国产乱码精品一区二区三区精东 | 欧美日韩中文字幕一区 | 超碰九七在线 | 一区二区三区播放 | 亚洲第一综合网站 | 黄色a一片| 国产femdom调教7777 | 六月婷婷久香在线视频 | 国产欧美一区二区精品97 | 亚洲国产精品久久人人爱 | 欧美一级在线免费观看 | 成人精品久久久 | 好吊妞在线 | 天天躁夜夜躁狠狠是什么心态 | 婷婷四房综合激情五月 | 香蕉黄色片 | 嫩草午夜少妇在线影视 | 任你躁久久久久久妇女av | 亚洲欧美视频在线播放 | 国产又粗又硬又爽的视频 | 日本肉体xxxⅹ裸体交 | 国产精品视频分类 | 国产乱码在线 | 少妇精品视频 | 又色又湿又黄又爽又免费视频 | 男人午夜免费视频 | 天天草比| 超碰97国产精品人人cao | 精品国产18久久久久久 | 亚洲综合色一区 | 夜夜躁狠狠躁日日躁视频 | 亚洲欧美激情精品一区二区 | 国产精品久久久18成人 | 国产人人干 | www.操操操.com| 国产欧美精品国产国产专区 | 国产一区二区精华 | 国产2 | 99精品国产一区二区三区2021 | 男女日批视频 | 久久国产精品99久久人人澡 | 中文字幕一区二区人妻性色 | 国产成人美女视频 | 日p免费视频 | 99精品国产一区二区三区2021 | 国产www视频 | 激情综合五月婷婷 | 澳门久久 | 日本女人黄色片 | 欧美一级免费在线观看 | 亚洲一区二区三区四区在线 | 国产三级aaa | 黄色毛片毛茸茸 | 国产精品初高中害羞小美女文 | www亚洲综合| 三级精品视频 | 国产麻豆精品传媒 | 天天爽夜夜爽人人爽一区二区 | 中文字幕第五页 | 我要看一级黄色 | 卡一卡二在线视频 | 人人干av| 91在线视频免费观看 | 亚洲精品久久久久久动漫器材一区 | 永久免费无码网站在线观看个 | 蘑菇视频黄色 | 少妇无码一区二区二三区 | 国产123区| 少妇精品无码一区二区免费视频 | 强行挺进熟睡少妇av | 无码av中文字幕久久专区 | 国产免费久久久 | 日韩欧美成人一区二区三区 | 日本我不卡 | 亚洲成人美女xvideos | 波多野结衣在线观看一区二区三区 | 国产精品9999久久久久仙踪林 | 国产精品区免费视频 | 色插视频| 手机在线一区二区三区 | 久久久91精品 | 欧美精品日韩在线 | 精品中文字幕在线 | 国产欧美黑寡妇久久久 | 色噜噜狠狠色综合网图区 | 国产乱子伦视频一区二区三区 | 亚洲在av极品无码天堂手机版 | 精品无码专区毛片 | 亚洲中文字幕无码av永久 | 99精品国产兔费观看久久 | 亚洲麻豆91传媒 | 深夜激情网 | 亚洲无线视频 | 国产福利精品视频 | 中国china体内裑精亚洲日本 | 日韩美女一区 | 国产欧美精品区一区二区三区 | 精品久久人妻av中文字幕 | 日韩 欧美 亚洲 | 少妇伦子伦精品无吗在线观看 | 久久久资源 | 亚洲午夜精品久久久久久人妖 | 黑人巨大精品欧美一区二区奶水 | 国色天香久久久久久久小说 | 亚洲国产精品综合久久网各 | 成人91在线| 色噜噜狠狠色综合免费视频 | 天堂资源官网在线资源 | 中文字幕无码色综合网 | 97婷婷狠狠成为人免费视频 | 怡红院一区二区 | 亚洲欧美日韩精品色xxx | 国内乱子对白免费在线 | 免费观看成人www动漫视频 | 亚洲涩涩 | 欧美我不卡 | 欧美极品少妇 | 人人妻人人澡人人爽 | 五月天激情综合网 | 天堂久久爱资源站www | 丝袜 亚洲 另类 国产 制服 | 国产精品怕怕怕免费视频 | 伊人网国产 | 美女黄18以下禁止观看 | 精品99久久 | 泽村玲子av| 国产人妻人伦精品1国产 | 亚洲成av人片一区二区梦乃 | 香蕉日日 | 51国产黑色丝袜高跟鞋 | 性欧美18 | 午夜av无码福利免费看网站 | 国产精品一区二区在线看 | 日韩美女爱爱 | 日本久久精品少妇高潮日出水 | 久久久久久久女女女又又 | 亚洲日韩看片无码超清 | 午夜精品久久久久久久99热浪潮 | 欧美精品一 | 色一情一乱一乱一区91av | 毛片大全在线观看 | 午夜啪啪网站 | 国产cd人妖ts在线观看 | 成人无码www在线看免费 | 亚洲综合首页 | 黄色大片免费网站 | 岛国a视频 | 日本成人在线免费视频 | 国产成人无码免费看片软件 | 成人午夜黄色 | 婷婷丁香久久 | 免费国精产品—品二品 | 精品国产自在精品国产浪潮 | 亚洲国产综合精品久久久久久 | 欧美三级图片 | 国产精品网友自拍 | 久久网站免费观看 | 国产精品黄色av | 小sao货水好多真紧h无码视频 | 亚洲乱码一区二区三区三上悠亚 | 亚洲精品视频一区 | 五月婷在线观看 | 国产日韩久久久久 | 无遮挡h肉动漫在线观看 | 国产成人精品一区二区在线小狼 | 超碰在线99 | 好男人中文资源在线观看 | 精品国产91久久久久久浪潮蜜月 | 午夜福利92国语 | 亚洲欧美国产毛片在线 | 精品国产不卡一区二区三区 | 神马久久网站 | 黄色香蕉网 | 亚洲春色www| 11月流出美女撒尿偷拍在线播放 | 99热最新精品 | 欧美日韩黄色一级片 | 婷婷丁香五月中文字幕 | 四虎影视库 | 一级片在线观看免费 | 欧美丰满白嫩bbw激情 | 91嫩草亚洲精品 | 日日摸日日添日日碰9学生露脸 | 中文字幕2018 | 久久综合伊人 | 黄色大片国产 | 一本加勒比hezyo无码专区 | 国产成人无码精品久久久露脸 | 国产尤物av尤物在线看 | 天海翼一区二区三区免费 | 亚洲精品久久久久久动漫器材一区 | 亚洲www色 | 日韩高清影视 | 自拍偷自拍亚洲精品偷一 | 无套中出极品少妇白浆 | 天干天干天啪啪夜爽爽av小说 | 成人手机视频在线观看 | 国产精品爱久久久久久久 | 久久久久国产综合av天堂 | 免费无码肉片在线观看 | 超碰人人在线 | 一本之道久久 | 六个黑人玩一个中国少妇视频 | 在线中文字幕观看 | 高潮毛片无遮挡高清免费 | 黄色三级毛片视频 | 日韩精品视频一区二区三区 | 狼人大香伊蕉国产www亚洲 | 卡一卡二在线视频 | 98国产精品| 强壮公侵犯使我夜夜高潮 | 日本精品人妻无码免费大全 | 免费毛片基地 | 久久天天综合桃花久久 | 国产成人 综合 亚洲欧美 | 性开放网站 | 中文字幕有码av | 久久精品观看 | 国产精品爱久久久久久久电影蜜臀 | 国产精品一区在线观看你懂的 | 狠狠鲁视频 | 一性一交一伦一色一按—摩 | 波多野结衣理论片 | 最近中文2019字幕第二页 | 99久久国产综合精品麻豆 | 久久精品99久久久久久 | 窝窝午夜精品一区二区 | 色88久久久久高潮综合影院 | 狠狠综合| 国av在线 | 国产在线视频一区二区董小宛性色 | 91射| 少妇艳梅交换系列 | 国产成人性色生活片 | aaa少妇高潮大片免费看 | 亚洲国产精品美女 | 亚洲在线中文字幕 | 9lporm自拍视频区九色 | julia中文字幕在线 | 少妇做爰免费视频播放 | 国产精品伦 | 国产成人在线免费 | 岛国大片在线观看 | 91精品国产综合久久蜜臀 | 极品尤物一区二区三区 | 欧美黄色大片免费看 | 国产日韩欧美在线观看视频 | 成人区精品一区二区 | 亚洲加勒比久久88色综合 |