欧美亚洲韩国_av电影院在线看_久久久久97_台湾佬中文娱乐网欧美电影

站長資訊網
最全最豐富的資訊網站

一篇文章帶你TypeScript入門(整理總結)

本篇文章給大家帶來了關于TypeScript入門的相關知識,希望對大家有幫助。

一篇文章帶你TypeScript入門(整理總結)

前言

ts是什么?ts其實是TypeScript的一個簡稱,就跟JavaScript簡稱為js一樣,官方給的解釋是,ts它是js的超集,其實js的代碼本質上都是ts編譯的,例如寫一個js代碼 document.write() ,上面的提示就是ts,如圖:

一篇文章帶你TypeScript入門(整理總結)
系統里面寫的是ts代碼,所以ts是js的超集,是給js添加拓展功能的語言,這樣的語言曾經還有一個叫as,但是這個語言已經沒了,它其實就是flash語言。但我么開發需要完善js的話,必須得有這樣的一個東西,所以微軟拿著這個as的語法開發了ts這個語言,也就是說as和ts的語法基本是一樣的,只不過ts是微軟開發的,然后推廣的不錯,現在隨著我們編程越來越全民化,ts使用的也就越來越多,包括在找工作中,如果你的薪資是在12k以上的話,基本上都會問你會不會ts,現在的編程很多情況下都是用到ts,因為它能給js添加拓展功能,

比如:可以進行各種各樣的模塊化開發,像之前提到的AMD,CMD開發,CommonJS,es6的模塊化規范。假設現在在客戶端開發,有沒有一種開發場景,既可以用AMD,也可以用CMD,CommonJS,es6的,

答案是沒有,因為CommonJS是只能在nodejs中使用,es6的模塊化開發只能在服務器中用,它們都是有各自限制的。

但是ts中,想用什么都可以,它是支持全場景的。ts它更像后端,他的語法跟java最相似,這樣有什么好處?大家知道js是弱類型語言,比如一個變量先定義一個數字型,然后再重新賦值一個字符串型的,這樣的話這個變量的類型就改變了,這種弱類型開發是對項目有一定的安全隱患的,

比如就用這個變量去做其他事情,它有可能變成其他類型的數據,所以對開發來說是有安全隱患的,所以必須得有ts來規范js開發,消除這個安全隱患,這就是為什么ts像java、#c這些后端語言,這些強類型語言定義變量的時候,需要先聲明這些變量的類型是什么,一旦定義這個變量的類型后,后期是不允許修改類型的,有了這樣的規范約束后,開發就更加安全了。

現在ts使用的場景是非常廣泛:js的提示(編輯器內置了規范語法的ts),主流框架vue,react在底層寫框架的時候用的也是ts。

說這么多,下面直接介紹ts,也就是TypeScript。


TypeScript

簡介

ts是一個給js添加特性的擴展語言。

  1. TypeScript是由微軟開發的一款開源的編程語言。
  2. TypeScript是JavaScript的超集,遵循最新的es6、es5規范。TypeScript擴展了JavaScript的語法。
  3. TypeScript更像后端java、C#這樣的面向對象語言,可以讓js開發大型企業項目。
  4. 谷歌也在大力支持TypeScript的推廣,谷歌的angular2.x+就是基于TypeScript語法。
  5. 最新的vue、React也可以集成TypeScript。
  6. nodeJs礦建Nestjs、midway中用的就是TypeScript語法。

能給js增加的功能有

  • 類型批注和編譯時類型檢查
  • 類型推斷
  • 類型擦除
  • 接口
  • 枚舉
  • Mixin
  • 泛型編程
  • 名字空間
  • 元組
  • Await
  • 模塊
  • lambda 函數的箭頭語法
  • 可選參數以及默認參數

js 是一個弱類型的語言,但ts是強類型的,語法很相像,但ts算是擴展的js的語法,ts通過類型注解,提供編譯js時的靜態類型檢查。


編譯

ts無法直接運行,所以只能編譯成js運行。類似sass用來編譯css,不能直接運行。
編譯工具 – typescript

在全局任意位置下,先檢測是否安裝過ts

tsc --version

一篇文章帶你TypeScript入門(整理總結)

npm install -g typescript

一篇文章帶你TypeScript入門(整理總結)

檢測是否安裝成功:

tsc -v

ts文件的后綴是ts,編譯命令:

tsc 被編譯的文件

會在被編譯文件的同級目錄下生成一個同名的js文件。

生成自定義名稱路徑的文件:

tsc 被編譯的文件 --outFile 編譯后的文件路徑

初始化命令:

tsc --init

執行初始化命令后,會生成一個tsconfig.json文件,如下:

一篇文章帶你TypeScript入門(整理總結)

其中常用配置項說明:

代表ts要轉換后js版本

"target": "es5"

如果ts是以模塊形式書寫的,使用什么樣的模塊化規范,默認是commonJS

"module": "amd"

配置輸出目錄,可自己設置

"outDir": "./"

一篇文章帶你TypeScript入門(整理總結)

上面的配置項配置好以后,執行監視命令會自動編譯:

tsc -w

使用amd規范的時候,需要將require.js文件拷貝到項目根目錄下,且需要一個出口文件:

<script src="require.js" data-main="main.js"></script>

將ts編譯成js,自動生成目標js文件

tsc 目標js文件

一篇文章帶你TypeScript入門(整理總結)

一篇文章帶你TypeScript入門(整理總結)


ts基礎類型

在定義變量的時候需要指定類型,且定義好類型以后就不能改變他的類型了 – 強類型。

數值型

let decLiteral: number = 6; // 十進制 let hexLiteral: number = 0xf00d; // 16進制 let binaryLiteral: number = 0b1010; // 二進制 let octalLiteral: number = 0o744; // 8進制  let num: Number = 5; // 此時大寫Number類型可以賦值為數值對象類型 num = new Number(10);

布爾值

let isDone: boolean = false;let bool: Boolean = true; // 首字母大寫的類型可以賦值為對象類型

boolean這種類型只能賦值兩個值:true/false

var bool: boolean = true  var bool: boolean = new Boolean(true)

Boolean這種類型除了上面的字面量方式的兩個值,還可以使用構造函數方式

var bool: Boolean = false;var bool: Boolean = new Boolean(true)

字符串

var str: string = 'asdfasdf';var str1: String = new String('43563456')

數組

ts寫的數組,其中的數據必須是同一個類型,但不指定長度
數組中所有數據的值類型必須是數字

var arr: number[] = [1,2,3];var arr: Array<string> = ['a','b'];

聲明二維數組

var arr: number[]var brr: number[][] = [     [1,2,3],     [4,5,6]];

元組 Tuple

ts中的元組表示不同類型數據組成的集合,通常會固定長度,同樣可以使用下標訪問元素和給元素賦值

元組中就可以放不同類型的數據
元組在定義的時候就將長度固定了

var x: [string,number] = ['a',2];console.log(x);console.log(x[0]);

錯誤

x[2] = 20

不能加長度

let x: [string, number];x = ['hello', 10];x[2] = 'world'; // 不能加長度

可以給元素push一個值,這個值必須是string或number的類型,其他類型不允許

x.push('aaaa')

錯誤

 x.push(true) // 錯誤

當給元組中并不存在的下標進行賦值的時候,會使用聯合類型:

x[3] = 'world'; // OK, 字符串可以賦值給(string | number)類型x 6] = true;// Error, 布爾不是(string | number)類型

枚舉

ts中的枚舉相當于在定義變量類型,這個類型有固定的取值范圍,默認值從0開始,向后遞增,使用指定的鍵來換換取到值,如果一個變量使用了這個類型,那他的值就必須從這個類型中選擇,不能隨便賦值:

枚舉 – 必須使用指定的集合中的值
枚舉類型,其實是給數字起了一些名字,讓我們可以通過這個名字獲取到對應的數字
默認情況,第一個名字對應的值是0,依次向后遞增

enum Color {Red,Green,Blue};var c: Color = Color.Blue; // 2

如果給其中某一個名字賦值了,他后面的名字對應的值,是根據這里的值向后遞增

enum Color {Red,Green = 5,Blue};var c: Color = Color.Blue; // 6

每個值可以指定

 enum Color {Red=3,Green = 4,Blue=2};  var c: Color = Color.Blue; // 2

可以指定非數字的值

enum Color {Red='男',Green = '女',Blue='不男不女'};var c: Color = Color.Blue; // 不男不女

通過對應值的數字獲取到對應的名字 – 名字是字符串類型

enum Color {Red,Green=5,Blue};var c: string = Color[6] // Blue

如果我們指定了其中的值是非數字型的,就不能使用這個騷操作了

enum Color {Red='red',Green = 'green',Blue='blue'};var c: string = Color['red']; // 這個地方的值必須是數字才行

Any

Any類型,表示弱類型,也就是當我們定義一個變量的時候,不能確定變量值的類型的時候,這個類型我們又愛又恨
使用:

var a:any = 20var b:any = 'asdfasdf'var c:any = [1,2,3]

注意:本來我們使用ts編寫代碼,為的是限制類型,減少安全隱患,但是如果使用了any類型,就跟直接寫js一樣了,失去了意義,所以若非迫不得已,盡量不要使用。

Void

這種類型,一般用于函數執行后,不使用return返回結果的時候,就指定返回結果是void
聲明變量的時候不使用它 – 當函數沒有返回值的時候,返回類型指定為void

function fn(a:number,b:number):void{    console.log(a*b);}

Undefined

這種類型主要用于參數和返回值,用于變量毫無意義,因為定義一個變量指定為undefined類型時,以后也就只能是undefined類型了,函數中的用法:

function fn(num:number|undefined):number|undefined{     return num;}

undefined – 未定義類型

var a:undefined = undefined

定義變量不用undefined,因為定義了沒有用

通常會用在函數的參數里面
希望fn函數的參數a是可選項

function fn(a:number|undefined):void{     console.log(a);}fn(undefined)

函數可選項
參數名后面,類型的冒號之前加 ? 表示這個參數是可選項
undefined通常用在函數返回值,如果返回的是undefined就需要在返回值的地方指定undefined類型

function fn(a?:number):number|undefined{     return a;}fn()

Null

null類型 – 空 – 這個數據要被銷毀啦
通常在定義復雜數據類型,且在后期需要給賦值為null的時候使用

var a:number|null = 10;

使用變量a計算 – 完成

讓內存回收這個變量

a = null

Never

never類型表示永遠不存在的值的類型,例如,一個函數中拋出的錯誤,函數中有死循環永遠不可能返回 …

function fn():never{     throw new Error('錯誤')}function fn():never{     return fn()}fn()

Object

對象類型:

var obj: object = {     name:"張三"}

錯誤寫法 - 對象默認不允許添加鍵值對

obj.name = '張三';

類型斷言

如果在一段代碼執行后的類型種類的可能性比較多,就需要假設這是一種什么類型 – 這種操作就叫做斷言。

如果一個表達式的結果有可能是多種類型,最終需要肯定其中一種

var abcd: any = [1, 2, 3, 4, 5];

斷言abcd變量是一個數組

(abcd as [string,number]).push(6)(abcd as string) += 'ddd'

函數聲明

在ts中,函數定義比起js中,多了參數類型和返回值的類型定義:
函數的定義,參數的類型聲明,返回值的類型聲明

function fn(a:number,b:number):number{     // console.log(a+b);     return a+b}var res = fn(1,2)

參數默認值

function fn(a:number,b:number=3):number{     return a+b}var res = fn(1)

但是在表示參數為可選項的時候,寫法稍有不同:
參數可選項 – ?表示可有可無

function fn(a:number,b?:number):number{     if(!b){         return a+5     }     return a+b}// var res = fn(1)var res = fn(1,3)

帶有默認值的參數,必須放在所有參數的最后面
可選項參數,必須放在所有參數的最后面

展開運算符和合并運算符同樣可以使用在ts中,但是要注意運算符后面的變量的類型設置。

計算不定實參的和

function  sum(...arr:Array<number>){     var sum = 0;     for(var i=0;i<arr.length;i++){         sum += arr[i]     }     return sum;}var res = sum(1,2,3);console.log(res);

函數重載:通過 為同一個函數提供多個函數類型定義 來實現多種功能的目的。例:

function outputName(name:string):string{     return "我叫"+name}var s1 = outputName('張三')console.log(s1);function outputAge(age:number):string{     return "我今年"+age+"歲了"}var s2 = outputAge(12)console.log(s2);

有多個函數結構非常類似,可以聲明一個函數的結構,讓函數遵循這個結構

function output(name:string):string;  定義了一個函數結構 - 名字叫output function output(age:number):string;  function output(name:any):any {     return "我今年"+name+"歲了"; }  var res = output(12) console.log(res);  var res1 = output('李四') console.log(res1);  var res2 = output(true)  報錯的,因為函數的結構要求是參數string或number console.log(res2);

ts中的類

定義

定義方式跟es6的定義方式類似

class 類名{     constructor(){      }}
class Person{     // 靜態屬性 - 用類名直接調用的屬性     static weight:number;      // 類的屬性要定義在這里     name:string; // 表示類中有一個屬性叫name     // 在ts類中,屬性和方法前面可以加一個修飾符:     /*         public - 公開的 - 在哪里都能用         protected - 受保護的         private - 私有的     */     public age:number; // public可以省略的     protected sex:string; // 受保護的只能在類里面用,類的外面不能用的     private height:number; // 私有的只能在類里面使用,類外面不能用     constructor(name:string,age:number,sex:string,height:number,weight:number){         // 給屬性賦值的時候,必須在這個類中是本來就有這個屬性才行         this.name = name          this.age = age          this.sex = sex          this.height = height;          // this.weight = weight;         Person.weight = weight;          this.init()     }      private init(){         // console.log(this.age);         // console.log(this.sex);         console.log(this.height);         console.log("這是初始化方法");     }      static fly(){         console.log("飛的更高");     } }  var p = new Person('張三',12,'男',120,150) console.log(p); // console.log(p.age); // console.log(p.sex); // 受保護的屬性不能類的外面使用 // console.log(p.height) // 私有屬性不能類的外面使用   // p.init()  console.log(Person.weight); Person.fly()

繼承

ts中類的繼承和es6的繼承是一樣,使用extends關鍵字,然后在構造函數中調用super函數相當于在調用父類的構造函數。

如果子類和父類有同名的方法,在子類調用這個方法的時候先在子類里面找,如果子類沒有再到父類里面找。

class Person{     // 靜態屬性 - 用類名直接調用的屬性     static weight:number;      // 類的屬性要定義在這里     name:string; // 表示類中有一個屬性叫name     // 在ts類中,屬性和方法前面可以加一個修飾符:     /*         public - 公開的 - 在哪里都能用         protected - 受保護的         private - 私有的     */     public age:number; // public可以省略的     protected sex:string; // 受保護的只能在類里面用,類的外面不能用的     private height:number; // 私有的只能在類里面使用,類外面不能用     constructor(name:string,age:number,sex:string,height:number,weight:number){         // 給屬性賦值的時候,必須在這個類中是本來就有這個屬性才行         this.name = name          this.age = age          this.sex = sex          this.height = height;          // this.weight = weight;         Person.weight = weight;          this.init()     }      private init(){         // console.log(this.age);         // console.log(this.sex);         console.log(this.height);         console.log("這是初始化方法");     }      static fly(){         console.log("飛的更高");     } }  var p = new Person('張三',12,'男',120,150) console.log(p); // console.log(p.age); // console.log(p.sex); // 受保護的屬性不能類的外面使用 // console.log(p.height) // 私有屬性不能類的外面使用   // p.init()  console.log(Person.weight); Person.fly()

類的修飾符

在類中定義屬性的時候,提供了3個修飾符:

  1. public:公有的 – 在類里面、子類中、類的外面都可以訪問
  2. protected:受保護的 – 在類里面、子類中可以訪問,在類外面不能訪問
  3. private:私有的 – 在類里面可以訪問,在子類和類的外面都不能訪問

靜態屬性和方法

es5中靜態方法使用:

// 模擬jquery的封裝function $(element){ 	return new Ele(element);}$.get = function(obj){     }function Ele(element){     this.element = document.getElementById("#"+element);}Ele.prototype.css = function(attr,value){     if(value){     	this.element.style[attr] = value;     }else{         return window.getComputedStyle(this.element)[attr];     }}$("#box").css("color","red");

在ts中定義靜態的屬性和方法使用static關鍵字。在靜態方法中無法訪問到普通的屬性,只能訪問到靜態的屬性。

class Person{     public name:string = "張三"; 	static age:number = 20;     constuctor(){      }     static print1(){         console.log(this.name); // 訪問不到     } 	static print2(){         console.log(Person.name); // 可以訪問到     }}Person.print1();Person.print2();

屬性可以設置為只讀

多態

面向對象的三大特點:封裝、繼承、多態

含義:多態就是說,父類定義一個方法不去實現,讓繼承它的子類去實現,這樣每個子類都會有不同表現。多態其實也是繼承的一種表現。

// 父類 - 動物類class Animal{     public tui:string = "有腿";     public eat(){         console.log("喜歡吃");     }     public sport(){         console.log("能走");     }     public tuiNum(){         console.log("有多條腿");     }}// 子類 - 人類class Person extends Animal{     sport(){         console.log("直立走");     }     tuiNum(){         console.log("兩條腿");     }}var p = new Person();console.log(p.tui); // 有腿p.eat(); // 喜歡吃p.sport(); // 直立走p.tuiNum() // 兩條腿// 子類 - 鳥類class Bird extends Animal{     sport(){         console.log("很少走,通常都在飛");     }     tuiNum(){         console.log("兩條腿");     }}var b = new Bird();console.log(b.tui);b.eat();b.sport(); // 很少走,通常都在飛b.tuiNum(); // 兩條腿// 子類 - 狗類class Dog extends Animal{     sport(){         console.log("通常都在跑,很少走");     }     tuiNum(){         console.log("4條腿");     }}var d = new Dog();console.log(d.tui);d.eat();d.sport(); // 通常都在跑,很少走d.tuiNum(); // 4條腿

效果:

多態的表現
一篇文章帶你TypeScript入門(整理總結)

**小總結:**多態就是多個子類繼承自同一個父類,但是每個子類將繼承下來的屬性或方法做了改善,最終每個子類表現出來的結果是不一樣的。

多態其實源于繼承,也是方法的重載。

抽象類

在實際工作中,項目負責人通常會寫一些標準(類似于大綱),然后將標準交給具體實現的攻城獅,由攻城獅將這個標準進行具體化開發。

ts中的抽象類就是為制作標準的。抽象類不能被實例化,只能被派生類繼承并實現。

定義抽象類使用abstract關鍵字來修飾類。

abstract class Animate{     public name:string; 	constructor(name:string){ 		this.name = name;     }}var ani = new Animate("動物"); // 報錯class Dog extends Animate{     constructor(name:string){ 		super(name);     }}var d = new Dog("小黃");

這種結構沒有意義。跟普通的繼承是一樣的,并不能體現出標準的特殊。在抽象類中通常會有抽象方法 – 使用abstract修飾的方法。

抽象方法必須在抽象類中,且只需要定義方法結構,不要具體的實現。但是派生類中必須實現(完善)抽象方法。

abstract class Animate{     public name:string; 	constructor(name:string){ 		this.name = name;     }     abstract eat():void; // 抽象方法}class Dog extends Animate{     constructor(name:string){ 		super(name);     }     eat(){ // 實現了抽象方法         consolelog("小狗吃糧食");     }}

這個結構就能體現出標準的特殊:規定子類必須包含eat方法。

抽象方法只能放在抽象類中。

抽象類存在的意義就是被其他類繼承,是其他類的基類。

接口

抽象類只能給方法定義標準,對于屬性限制不夠,所以ts設計了接口語法,它定義了屬性和方法的規范,起到限制和規范的作用。接口并不關心這些類的內部狀態數據,也不關心這些類里方法的實現細節,它只規定這批類里必須提供某些方法,提供這些方法的類就可以滿足實際需要。

ts的接口跟別的主流服務器端語言的接口一樣,同時還增加了更加靈活的接口類型,包括屬性、函數、可索引和類等。

簡單來說,接口也是在定義標準,只不過更加靈活和全面。

屬性接口

屬性接口專門為了約束屬性而設計。

語法:

interface 接口名稱{     變量:類型;     變量:類型;}

使用方式:

function printInfo(info:接口名稱){     console.log(info.屬性名); // 屬性名必須是接口定義過的,否則報錯}

例:

// 以前對于數據的限制// 1.定義方法function printInfo():void{     console.log(123);}printInfo();// 2.傳入參數function printInfo(info:number):void{     console.log(info);}printInfo(123);// 3.傳入的參數對json限制function printInfo(info:{name:string}):void{     console.log(info);}printInfo({     name:"張三"});printInfo({ // 錯誤示例 - 鍵在函數中不存在     sex:"男"});// 這種函數只能對一個鍵做限制,要做批量限制很麻煩,要寫很多函數// 使用接口限制// 1.定義接口interface info {     name:string;     sex:string;}// 2.定義函數使用接口類型function printInfo(data:info){     console.log(data.name);     console.log(data.sex);     // console.log(data.age); // 錯誤 - info中沒有age鍵}// 3.使用printInfo({     name:"張三",     sex:"男",     age:20 // 錯誤 - info中沒有age鍵});var obj = {     name:"張三",     sex:"男",     age:20}printInfo(obj); // 正確// 接口可以批量對變量進行約束 - 參數的順序可以不一樣,但是不能少參數

定義接口中的可選參數:

interface info{     name:string;     sex?:string;     [propName:string]:any // 這里表示其他屬性也可以加,也可以不加 } // 這個接口表示name是必須,sex是可選項 // 在屬性前面可以使用readonly來修飾屬性不可以修改

例:

// 對jquery的ajax的封裝$.ajax({     type: "GET",     url: "test.json",     data: {username:$("#username").val(), content:$("#content").val()},     dataType: "json"             });// 定義接口interface Config{     type?:string;     url:string;     data?:string;     dataType?:string;}// 使用接口類型封裝ajaxfunction sendAjax(config:Config){     var xhr = new XMLHttpRequest();     }// 調用sendAjax({     url:"",     });

函數接口

函數接口是專門為了約束函數的參數和返回而設計。

語法:

interface 接口名稱{     (參數:類型):返回值類型}

例:

// 加密的接口interface encrypt{     (key:string,value:string):string;}var md5:encrypt=function(key:string,value:string):string{     //模擬操作     return key+value;}console.log(md5('name','zhangsan'));

可索引接口

可索引接口是對數組、對象等有索引的數據做約束。

對數組的約束接口:

interface userArr {     [index:number]:string; // 表示索引必須為數字,數據必須是字符串}

使用:

var arr:userArr = ["張三","李四"]

對對象的約束:

interface userObj{     [index:string]:string;}

使用:

var obj:userObj = {name:"張三"}

泛型

泛型:軟件工程中,我們不僅要創建一致的定義良好的API,同時也要考慮可重用性。 泛型不僅能夠支持當前的數據類型,同時也能支持未來的數據類型,這在創建大型系統時為你提供了十分靈活的功能。

通俗理解:泛型就是解決 類 接口 方法的復用性、以及對不特定數據類型的支持(類型校驗)

泛型方法:

function getInfo<T>(value:T):T{     return value;}getInfo<number>(123);getInfo<string>('aaa');

例:

// 約束函數傳入number返回number,傳入string返回string// 以前:function fn(a:number):number;function fn(a:string):string;function fn(a:any):any{     return a;}// 使用泛型function fn<T>(a:T):T{     return a;}fn<number>(234);fn<string>("abc");

命名空間

多人合作開發項目的時候,避免不了會有函數、變量、類等數據的命名沖突。但是ts不允許出現同名的類、函數、變量(const定義的),這時候就需要使用命名空間來解決這個問題。

命名空間其實就單獨做一個作用域,在當前命名空間下的數據跟別的命名空間下的數據重名也不會產生沖突。

命名空間語法:

namespace A{ // namespace 命名空間名稱{}      class Animal{         constructor(){             console.log("A命名空間下的動物類");         }     }}// 使用動物類的時候A.Animal()

例:
命名空間

工作中一個項目都是協作開發,每個人負責一個文件,避免不了函數、變量、類、接口會重名。
但是在ts文件,不允許類、函數、let、const 重名
命名空間就是解決這個問題的。
命名空間:就是開辟自己的作用域

// 定義命名空間:namespace 空間名字{} namespace A{     // 相當于定義了一個單獨的作用域叫A     export class Animal{         name:string;         constructor(name:string){             this.name = name;         }     } }  namespace B{     export class Animal{         age:number;         constructor(age:number){             this.age = age;         }     } }  // 在這里實例化Animal類 // 使用命名空間:命名空間.數據 var a = new A.Animal("張三"); console.log(a.name); // 張三  var b = new B.Animal(20); console.log(b.age); // 20

從結果中可以看到,同名的類處在不同的命名空間下是不會沖突的。

此時,A命名空間就是一個單獨的模塊,進行模塊化開發的時候,需要將命名空間導出,也就是說一個命名空間就是一個模塊,而不是一個單獨的文件了。

例:

// 導出export namespace A{ // 將命名空間導出     // 相當于定義了一個單獨的作用域叫A     export class Animal{         name:string;         constructor(name:string){             this.name = name;         }     }}

導入的時候,導入當前文件,接收命名空間,通過命名空間來調用數據:

// 導入import { A } from "./demo"; // 導入的是一個命名空間var a = new A.Animal("張三"); // 實例化那個Animal

ts事件封裝

為什么要封裝?

因為在es5和es6中允許dom元素繼承EventTarget,但是在ts中不允許繼承。

所以需要重構EventTarget。

使用dispathEvent來拋發事件,需要使用Event。所以重構Event。

本質:觀察者模式。

ts開發的規則

開發的時候通常都是在使用模塊化開發

怎么進行模塊化開發?一個模塊一個類,通常類的首字母會大寫,文件名稱和類的名稱保持一致。

封裝

準備工作:

將ts配置文件中的module選項改成amd。

 "module": "amd",

更改輸入輸出目錄:

"outDir": "./js", "rootDir": "./ts",

新建html,導入amd所使用的require.js。

配置導入文件以及異步推遲加載。

<script src="./require.js" data-main="./dist/Main"></script>

新建MyEvent.ts文件:

import MyTarget from "./MyTarget";export default class MyEvent{     public type:string;     [key:string]:any;     public myTarget:MyTarget|null = null;     public target:MyTarget|null = null;     public data:any;     constructor(type:string,data:any = null){         this.type = type;     }}

新建MyTarget.ts

import IListener from "./IListener";import MyEvent from "./MyEvent";export default class MyTarget{     public listenerList:IListener = {};     constructor(){      }     addEventListener(type:string,listener:Function):void{         if(!this.listenerList[type]) this.listenerList[type] = [];         this.listenerList[type].push(listener);     }     removeEventListener(type:string,listener:Function):void{         if(!this.listenerList[type]) return;         var index:number = this.listenerList[type].indexOf(listener);         if(index>-1){             this.listenerList[type].splice(index,1);         }     }     dispathEvent(evt:MyEvent):boolean{         var list:Function[] = this.listenerList[evt.type];         if(!list) return false;         evt.myTarget = this;         evt.target = this;         for(var i:number=0;i<list.length;i++){             list[i].call(this,evt);         }         return true;     }}

新建IListener.ts文件

export default interface IListener{     [key:string]:Array<Function>;}

在Main.ts中使用:

import MyEvent from "./MyEvent";import MyTarget from "./MyTarget";var doc = new MyTarget();var ev = new MyEvent("zi");ev.a = 10;// var ev1 = new MyEvent("ziji");// ev1.b = 20;// console.log(doc);doc.addEventListener("zi",handler1);doc.addEventListener("zi",handler2);doc.addEventListener("ziji",handler2);doc.dispathEvent(ev);doc.dispathEvent(ev);// doc.dispathEvent(ev1);function handler1(e:MyEvent){     console.log(e + "----------------");}function handler2(e:MyEvent){     console.log(e + "||||||||||||||||||||");     (e.target as MyTarget).removeEventListener("zi",handler2);}

效果:

第二次拋發的事件被刪除
一篇文章帶你TypeScript入門(整理總結)

贊(0)
分享到: 更多 (0)
網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
主站蜘蛛池模板: 91男女视频 | 午夜三区 | 久久网中文字幕 | 伊人网综合在线 | 男人av网 | 欧美成人国产精品高潮 | 日本一区二区三区在线观看视频 | 成人亚洲玉足脚交系列 | 91小视频在线 | 日本久久一区二区 | 国产精品56页 | 99黄色网 | 国产一区在线观看视频 | 琪琪在线视频 | 一级黄色片视频 | 天堂8中文| 亚洲欧美爱爱 | 日日操天天射 | 午夜久久视频 | 成人免费视频国产免费麻豆 | 伊人论坛 | 好吊操这里只有精品 | 中文字幕_第2页_高清免费在线 | 日韩精品一区二区三区免费视频 | 草草草av| 在线播放视频高清在线观看 | 国产精品999久久久 国产999精品久久久久久 | 日韩无套 | 一区二区日韩视频 | 亚洲成人少妇 | 欧美日韩另类视频 | 日本黄色高清 | 亚洲激情99| 日日日插插插 | 久久在线精品视频 | 91福利在线导航 | 午夜影院一区 | 中国一级黄色 | 国产伦精品一区二区三区四区免费 | 麻豆疯狂做受xxxx高潮视频 | 天天操天天操天天操天天 | 一级做a爱片性色毛片 | 亚洲91视频| 中文字幕在线播放av | 四虎av在线 | 成人福利网址 | 女同另类之国产女同 | 欧美黑人一区 | 欧美激情日韩 | 99视频在线播放 | 色老板精品凹凸在线视频观看 | 不卡的av在线 | 在线播放国产精品 | 久久精品网址 | αv在线| 国产三级理论片 | 日本午夜免费 | 午夜精品在线观看 | 成人综合av | 呦女精品 | 日日网站 | 激情草逼| 亚色中文字幕 | 爆操网站 | 国产91色在线| 免费日韩网站 | 国产黄色片子 | 日韩欧美日韩 | 天天爱天天干天天操 | 徐锦江一级淫片免费看 | 一区二区色 | 日韩91| 国产99在线 | 一级做a毛片 | 热热色国产 | 狠狠操狠狠爱 | 亚洲成人av在线播放 | 色一情一交一乱一区二区三区 | 永久av在线 | 日本在线www | 综合激情综合 | 国产精品久久久久免费 | 黄色日韩在线 | 日韩欧美精品中文字幕 | 激情网五月 | 麻豆高清免费国产一区 | 亚洲高清中文字幕 | 国产亚洲成人精品 | 中文字幕乱码在线 | 91文字幕巨乱亚洲香蕉 | 国产一级黄 | 午夜色综合 | 性生活黄色大片 | 禁断介护av一区二区 | 成人av软件 | 久久久成人免费视频 | 日本国产在线观看 | 亚洲国产一区二区在线 | 久久亚洲99精品2021 | 少妇人妻一级a毛片 | 99re在线视频播放 | 视频一区亚洲 | 男人天堂2014 | 天天色网站 | 成人免费片库 | 日韩一区二区三区免费视频 | 亚洲美女精品视频 | 香蕉啪啪网 | 男女一级片 | 91欧美视频| 涩涩一区| 欧美亚洲激情视频 | 天天色综合av | 不卡的av在线免费观看 | 一区二区三区国产在线观看 | 成人免费黄色网 | 国产日韩欧美在线播放 | 这里只有久久精品视频 | 五月花婷婷 | 在线观看黄色小视频 | 美日韩视频 | 久久综合九色综合欧美狠狠 | 91精品国产综合久久婷婷香蕉 | 亚洲精品久久久一区二区三区 | 奇米精品一区二区三区四区 | 丁香婷婷网 | 色91视频 | 日日夜夜狠 | 日韩一区免费视频 | 91小视频在线观看 | 欧美91在线 | www.奇米 | 久久一视频 | 在线看中文字幕 | √天堂8资源中文在线 | 欧美xxxx×黑人性爽 | 黄色片免费看 | 五月天激情视频 | 看看毛片 | 97蜜桃网 | 欧美日韩精品在线视频 | 中文字幕在线播放av | 看全色黄大色黄大片大学生 | 欧美视频免费在线 | 久久久久久久久精 | 国产亚洲不卡 | 狠狠躁18三区二区一区 | 爆操巨乳美女 | 天天干狠狠插 | 成年人精品视频 | 欧美一级黄色片在线观看 | 国产视频中文字幕 | 韩国三级黄色 | 成人av网页| 日韩涩 | 一区二区三区四区影院 | 亚洲男人第一av | 激情精品 | 青青操免费在线视频 | 狠狠综合久久av一区二区 | 亚色视频在线观看 | 中国黄色一级视频 | 亚洲少妇一区 | 操女人免费视频 | 国产伦精品一区二区三区四区免费 | 性生活毛片 | 亚洲精品影视 | av男女| 国产毛片毛片毛片毛片毛片 | 国产成人精品aa毛片 | 香蕉钻洞视频 | 欧美xx视频 | 精品自拍一区 | 欧美 日韩 国产 成人 在线 91 | 午夜影院毛片 | 日本激情网 | 超碰一区二区 | 极品美女无套呻吟啪啪 | 国产精品字幕 | 久久久www成人免费无遮挡大片 | 中文字幕视频播放 | 国产精品va在线 | 免费在线性爱视频 | av毛片在线看 | 国产微拍精品 | 欧美久久一区 | 暖暖日本在线视频 | 夜夜春av | 亚洲区在线播放 | 亚洲性综合| 久久艹网站 | 17c国产精品一区二区 | 午夜亚洲福利 | 国产精品久久婷婷 | 视频在线一区 | 91看片免费 | 国产亚洲精品美女 | 日韩午夜av| 欧美一级免费视频 | 久久与婷婷 | 中文字幕第一页久久 | 中出在线播放 | 欧美专区在线视频 | 韩日一区| 国产裸体永久免费无遮挡 | 久久久久久高清 | 九九小视频 | 亚洲精品一区在线观看 | 隣の若妻さん 波多野结 | 亚洲制服无码 | 奇米狠狠操 | 小柔的淫辱日记(h | 爱情岛论坛永久入址测速 | 黄色小视频在线播放 | 日本黄色高清视频 | 一级黄色av片 | 国产精品久久久久久久久久蜜臀 | 丰满岳妇乱一区二区三区 | 免费看黄网站在线 | av72成人| 亚洲国产精品一区二区www | 亚洲精品午夜久久久久久久 | juliaann精品艳妇hd | 精品一区精品二区 | 国产成人精品123区免费视频 | 黄色片aa| 黄色网在线播放 | 国产成人在线网站 | 精品国产91乱码一区二区三区 | 国产精品国产三级国产aⅴ无密码 | 欧美人狂配大交3d | 在线观看亚洲黄色 | 国产亚洲欧美视频 | 91美女网站 | 久久亚洲网站 | 超碰国产人人 | 久久久九九 | 亚洲欧美日韩国产精品 | 亚洲片在线观看 | 成人免费视频大全 | 国产女同疯狂互摸系列3 | 五月天婷婷在线视频 | 新天堂av | av在线一区二区三区 | 在线视频在线 | 国产伦精品一区二区三区在线播放 | 成人久久av | 北条麻妃一区二区三区 | 亚洲 欧美 国产 制服 动漫 | 欧美一级特黄视频 | 亚洲天堂一区在线观看 | 青草一区 | 91成人毛片| 干夜夜 | 在线观看欧美成人 | 欧美性猛交99久久久久99按摩 | 国产亚洲久久 | 欧美自拍偷拍 | 欧美一区二区三区在线视频 | 久久久综合色 | 亚洲乱人伦 | 亚洲天堂一区二区 | 精品国产欧美 | 在线观看免费黄色 | 亚洲欧美精品伊人久久 | 欧美我不卡 | av香蕉| 亚洲欧美在线另类 | 伊人网站在线观看 | 久久福利国产 | 成人爱爱网站 | 伊人操操| 日日日日操 | 在线观看av毛片 | 伊人影院在线观看视频 | 精彩久久 | www婷婷| 一级特黄欧美 | 中文字幕在线视频观看 | 欧洲中文字幕 | 久久精品视频5 | 欧美视频成人 | 在线播放美人ol松岛枫 | 国产一级在线观看 | 久草国产精品 | 国产高清在线不卡 | 亚洲欧美在线观看 | 黄色片中国| 精品黑人 | 婷婷国产在线 | 欧美h在线观看 | 亚洲精品视频免费 | 久久人人爽人人爽爽久久 | 国产黄色片免费 | 欧美精品一区二 | 亚洲3atv精品一区二区三区 | 精品免费一区 | 一级黄色片在线观看 | 69xxx少妇按摩视频 | 色婷婷综合久久 | 成人爽爽爽 | 国产精品一二三区视频网站 | 91av视频在线观看 | 日韩性色 | 久热这里只有精品6 | 中文在线精品 | 伦伦影院午夜理伦片 | 久久免费福利视频 | 一区久久久 | 天天操天天舔 | 亚洲男人的天堂在线播放 | 日韩大尺度在线观看 | 国产在线观看第一页 | 在线视频国产一区 | 久久狠狠干 | 日韩精品在线观看网站 | 国产美女精品一区二区 | 在线中文字幕第一页 | 久久久久中文 | 久一在线| 国产91精品ai换脸 | αv在线| 操操操操操操操 | 亚洲人成高清 | 免费看av的网址 | 国产精品九 | 午夜肉体高潮免费毛片 | 91av在线播放视频 | 免费成人激情视频 | 伊人黄色| 欧美日本一区二区三区 | 欧美日韩一区二区三区 | 国产精品自在线 | 精品孕妇一区二区三区 | 日韩欧美大片在线观看 | 贵族女沦为官妓h呻吟 | 69精品人人人人 | 97精品欧美一区二区三区 | 999精品网| 国产xxxx裸体肉体大胆147 | 天天碰视频 | 激情春色网 | 亚洲二区在线视频 | 污视频软件在线观看 | 美女一区二区三区四区 | 国产v在线| a v视频在线观看 | 免费黄色a级片 | 在线播放色| 开心成人激情 | 成人久久大片91含羞草 | 污片视频在线观看 | 天天干,夜夜爽 | 99热1| 老汉av网站 | 插插宗合网 | 午夜成人影视 | 国产一区麻豆 | 欧美 日韩 综合 | 九九热中文字幕 | 国产日产欧美 | 自拍偷拍亚洲区 | 色花堂在线 | 国产精品视频一二三 | 国产网友自拍视频 | jzjzz成人免费视频 | 久久影视精品 | 黄色a级片 | 123成人网 | 日韩免费观看 | 国产aaa视频| 亚洲网站在线观看 | 网友自拍一区 | 亚洲天堂高清 | 婷婷激情综合 | 日本福利小视频 | 久月婷婷 | 香蕉视频首页 | 亚洲激情中文字幕 | 国模私拍大尺度裸体av | 精品一区av | 国产有码视频 | 欧洲成人精品 | 国语对白做受欧美 | 亚洲综合日韩 | 国产三级理论 | 99国产精品自拍 | 中国国产黄色片 | 亚洲福利在线播放 | 91超薄丝袜肉丝一区二区 | 亚洲精品.www | 在线亚洲观看 | 91视频在线看 | 成人在线一区二区三区 | 中文字幕观看在线 | 伊人365影院 | www一区二区 | 天天干天天干天天 | 欧美日韩在线观看一区 | 青青草成人在线 | 精品www| 一级片免费播放 | 国产在线视频不卡 | 精品一区二区三区久久 | 欧美aⅴ视频 | 亚洲精选久久 | 免费99精品国产自在在线 | 久久婷婷国产综合尤物精品 | 亚洲激情综合网 | 欧美伦理一区二区 | 天天摸日日摸 | 亚洲欧美精品在线 | 伊人春色网 | 国产精品 欧美 日韩 | 色欧美色 | 国产欧美一区二区 | 欧美日韩中文字幕 | 美女视频免费在线观看 | 天天天天 | 欧美黑粗硬 | 毛片视频在线免费观看 | 色偷偷噜噜噜亚洲男人 | av天天操| 亚洲午夜精品久久久久久浪潮 | 视频在线观看一区 | 国产精品粉嫩 | 亚洲欧美日韩成人 | 91网页在线观看 | 午夜影院中文字幕 | 日本成人在线免费 | 婷婷激情四射 | 成人黄色小视频在线观看 | 日本一区二区三区四区视频 | 欧美综合一区二区三区 | 亚洲乱码一区av黑人高潮 | 操亚洲女人 | 欧美日韩影院 | 欧美日韩在线观看一区二区 | 中文字幕久久综合 | 婷婷6月天 | 最新国产精品精品视频 | 福利视频三区 | 日韩在线高清视频 | 337p日本大胆噜噜噜鲁 | 国产精品久久久久久二区 | 久久人人人 | 嫩草综合 | 狠狠网站 | 999超碰 | 成人在线不卡视频 | 天天添天天操 | 午夜一区在线 | 国产亚洲欧美精品永久 | 在线黄色免费 | 69精品人人人人 | 午夜影院污 | 九色视频丨porny丨丝袜 | 超碰99热 | 国内自拍视频在线播放 | www.成人.com| 欧洲一区在线观看 | 超碰男人天堂 | 亚洲欧美自拍偷拍 | www.在线观看视频 | 午夜国产在线 | 亚洲三级伦理 | 国产男女激情 | 亚洲伦理中文字幕 | 久草网在线视频 | 黄色小视屏 | 在线视频观看 | 成人免费毛片男人用品 | 涩涩成人网 | 最新中文字幕第一页 | 亚色图| 一级片免费看视频 | 精品国产乱码久久久久 | 亚洲国产一区视频 | 国产又粗又长又黄视频 | 中文字幕一区二区三区又粗 | av免费资源 | 真实亲伦对白清晰在线播放 | 亚洲一区第一页 | 爱逼综合网 | 亚洲午夜久久久久久久国产 | 天堂在线8 | 激情网五月天 | 中文字幕1区2区3区 欧洲天堂网 | 乱子伦一区二区三区 | av在线网站观看 | 性猛交xxxx乱大交孕妇印度 | 天天射,天天干 | 久久精品视频一区二区 | 国产区一区二 | 91干干干 | 日本精品入口免费视频 | 99久久夜色精品国产亚洲 | 午夜免费播放观看在线视频 | 国产精品久久久久久婷婷天堂 | 亚洲综合1区 | 午夜激情视频在线 | 亚洲第一黄 | 国产成人精品在线视频 | 国产成人免费观看视频 | 青青草日本 | 在线观看免费av片 | 成人黄色三级视频 | 爱情岛亚洲首页论坛小巨 | 最新av在线网站 | 久久美女视频 | www五月婷婷 | 亚洲视频99 | 国产精品一区二区久久久 | 自愉自愉亚洲 | 麻豆精品久久 | 色婷婷av一区二区三区之e本道 | 国产精品美女自拍视频 | 四虎影视在线播放 | 91超碰国产在线 | 国产精品视频免费丝袜 | av在线不卡播放 | 欧美福利视频 | 欧美精品videos另类 | 免费欧美日韩 | 精品在线免费观看 | a天堂资源| 男女黄色片 | 中文在线免费视频 | 国产又猛又粗 | 久久久亚洲精品视频 | 国产v在线 | 伊人狼人综合 | 日本在线播放 | 茄子香蕉视频 | 97人人超 | 素人一区 | 毛片无遮挡高清免费观看 | 日本特级毛片 | 激情一级片 | 国产欧美在线 | 青青草手机视频在线观看 | 波多野一区二区 | 欧美日韩色图 | 亚洲欧美丝袜中文综合 | 久久欧美一区二区三区 | 国产午夜精品一区二区 | 成人av时间停止系列在线 | 青娱乐自拍视频 | 国产h视频在线 | 国产一区 日韩 | av桃色| 姐姐av| 欧美一性一乱一交一视频 | 国产精品系列视频 | 激情伊人 | 日韩av免费在线观看 | 亚洲精品午夜久久久 | 亚洲а∨天堂久久精品喷水 | 久草资源在线观看 | 91成人免费在线观看 | 国产女人18毛片水18精 | 国产精品久久久久久久岛一牛影视 | 国产又粗又长视频 | 亚洲福利二区 | 久久久免费网站 | 欧美在线观看一区二区 | 成人精品久久 | 中文字幕av在线免费观看 | 欧美午夜三级 | 三级av网站 | 91av在线免费观看 | 亚洲a在线播放 | 伊人久久久久久久久久久久久 | 污片在线看 | 亚洲 国产 日韩在线 精品 | 日本一区二区三区在线观看视频 | 国产精品99久久久 | 亚洲福利影院 | 污网站在线播放 | 18日本xxxxxxxxx95 国产精品www色诱视频 | 一个人看的毛片 | 亚洲日本天堂 | 亚洲在线观看免费视频 | 不卡视频免费在线观看 | 成人免费在线观看网站 | 欧美日韩一区二区在线观看 | 国产喷潮| 糖心logo在线观看 | av自拍偷拍 | av字幕在线 | av大片免费观看 | 高级家教课程在线观看 | 看中国毛片 | 亚洲精品在线观看av | 亚洲我不卡 | 国产精品99一区二区三区 | 欧美日韩免费视频 | 欧美色视频在线观看 | 日韩毛片基地 | 亚洲成人自拍 | 免费一级全黄少妇性色生活片 | 岛国大片在线观看 | 日日操夜夜爽 | 丁香花婷婷| 国产αv| 蜜臀av一区二区 | 亚洲久久成人 | 青青草公开视频 | 婷婷综合视频 | 粉嫩av一区二区三区免费观看 | 亚洲三级在线观看 | 久久a区| 国产综合视频在线 | 亚洲香蕉中文网 | 国产高清第一页 | 中文字幕亚洲第一 | 一级黄大片| 日韩aa视频 | 激情小视频 | 国产欧美日韩综合精品一区二区 | 一级成人黄色片 | 黄色免费片 | 成人小视频在线免费观看 | 国产福利网 | 一级黄色免费毛片 | 日本xxxx在线观看 | 国产一区二区在线视频 | 91午夜精品 | 国产a√ | 久久激情网| 国产大尺度在线 | 97碰| 久久久久久九九 | 天天干夜夜夜夜 | 美女久久视频 | 日本天堂网 | 亚洲女同视频 | 欧美日韩中文字幕 | 欧美一区免费看 | 欧美极品在线 | 欧美九九九 | 大学生第一次破女处视频国产 | 特一级黄色大片 | 午夜精品久久久久久久96蜜桃 | 国模私拍大尺度裸体av | 亚洲天堂小说 | 97精品国产97久久久久久免费 | 日韩在线不卡 | av免费观 | 男人综合网 | 中文字幕av二区 | 男女午夜爽爽爽 | 亚洲乱色 | 日日淫| 亚洲一级影片 | 日本性久久| 一区二区三区高清 | av每日更新在线观看 | 开心激情五月婷婷 | 久久看av| av基地 | 日韩欧美不卡 | 日韩激情图片 | 欧美精品四区 | 精品免费国产 | 国产精品久久9 | 亚洲国产精品嫩草影院久久av | 锦绣未央在线观看 | 欧美一级性 | 欧美性xxxxxx| 一级片观看 | 欧美aa视频 | 天天爱天天爽 | 北条麻妃99精品青青久久 | 国产欧美日韩成人 | 六月婷婷色 | 永久免费视频网站直接看 | 国产又粗又猛又色 | www.av色| 毛片日韩 | 五月丁香 | 丰满女邻居的色诱4hd | 456亚洲影院 | 欧美日韩中文字幕在线 | 色八戒av | 国产男女精品 | 国产精品日韩欧美 | 欧美高清性xxxxhd | 影音先锋黄色资源 | 日韩黄| 性av网| 91天天干 | 欧美福利在线观看 | 91麻豆精品91久久久久同性 | 国产一区av在线 | 亚洲 欧美 综合 | 伊人网大| 欧美二区在线观看 | 亚洲国产精品国自产拍av秋霞 | 欧美日韩精品在线播放 | 日本黄图 | 亚洲天堂视频在线免费观看 | 成人免费毛片网站 | 精品黑人一区二区三区国语馆 | 国产黄免费 | wwwxx国产在线观看 | 一道本综合久久 | 国产字幕侵犯亲女 | 亚洲黄色片| 午夜精品影院 | 亚洲精品午夜久久久 | 永久精品动漫网站入口大全 | 777久久久 | 欧美在线 | 亚洲 | 福利小视频在线 | 亚洲精品456在线播放 | 亚洲人成人 | 超碰五月| 亚洲人人爱 | 一区二区三区四区不卡 | 在线免费色视频 | 人妖av在线 | 性色av一区二区三区 | 国语对白真实视频播放 | 亚洲欧美日本在线观看 | 久久久午夜精品 | 日操夜操天天操 | 伊人成人精品 | 亚日韩av | 午夜在线免费观看视频 | 天天看毛片 | 尤物视频在线 | 国产精品一二三区 | 欧美国产片 | 国内av网| 超碰国产人人 | 日韩3区| 国产性生活片 | 神马久久久久久久久 | 日韩免费av网站 | 黄色免费播放 | 国产精品成人3p一区二区三区 | 国产91色 | 宅男在线视频 | 巨乳中文字幕 | 伊人7| 国产亚洲欧洲 | 午夜视频在线免费观看 | 久草香蕉视频在线观看 | 成人黄色免费在线观看 | 日本成人中文字幕 | 在线观看福利片 | 激情欧美一区二区免费视频 | 黄色在线免费播放 | 岛国二区| 日韩污视频 | 成人国产在线观看 | www.五月婷| 最新国产视频 | 日韩久久久久久久 | 九色丨蝌蚪丨少妇调教 | 欧美成人黄色网 | 午夜免费av | 欧美手机在线视频 | 成人在线三级 | 日本xxxxxxxxx | 性感美女毛片 | 午夜激情网站 | 国产一级片免费视频 | 伊人久久在线 | japanese国产在线观看 | 少女情窦初开的第4集在线观看 | 日干夜干| a级片毛片 | 国产精品久久久久久欧美2021 | 91爱爱网站 | 天天操夜夜夜 | 亚洲欧美高清在线 | 91极品身材尤物theporn | 男女在线免费观看 | 天天插天天狠天天透 | 99精品99| 黄瓜污视频在线观看 | 青青草原综合久久大伊人精品 | 中文字幕av网站 | 伊人影院亚洲 | 九九爱国产| 日本毛片在线观看 | 日韩欧美一区二区三区 | 4438五月天| 亚洲免费观看视频 | 天堂精品一区二区三区 | 国产精品久久久久久久午夜 | 欧美日韩二区三区 | 美女黄页在线观看 | 日本精品一二区 | 亚洲综合在线色 | 国产手机精品视频 | 国产成人精品网站 | 日韩中文字幕视频在线观看 | 久久9999久久| 中文字幕一区二区三区不卡 | 国产91在线观看丝袜 | 天天操天天插天天射 | 91水蜜桃| 久久免费高清视频 | 天天干天天色天天射 | 久草视频在线资源站 | 亚洲免费观看高清完整 | 国产黄大片| 久久白虎 | 精品一区二区免费视频 | 蜜臀999| 国产馆av| 一区二区三区福利 | 亚洲黄色片在线 | 日韩aⅴ片 | 国产区视频在线 | 黄色三级小视频 | 亚洲羞羞| 草操网| 日韩精品在线一区 | 成人福利小视频 | 亚洲国产精品一区二区三区 | 免费在线看黄网址 | 天天做夜夜爱 | 亚洲高清影院 | 欧美手机在线 | 日韩欧美三级在线 | 日韩在线视频二区 | 久久99九九 | 自拍偷在线精品自拍偷无码专区 | 国产精品亚洲а∨天堂免在线 | 黄色天堂| 亚欧洲乱码视频 | 国产激情毛片 | 好吊日在线 | 国产爽爽视频 | 一级黄色大片免费观看 | 黄色片免费播放 | 久久538 | 日日爱669| 日韩中文字幕免费 | 涩涩网址 | 丁香六月婷婷综合 | 成人午夜免费观看视频 | 亚洲天堂网址 | 免费一级肉体全黄毛片 | 91片看| 中文字幕一级 | 最好看的2019中文大全在线观看 | 在线观看中文字幕一区 | 在线中文字幕一区 | 91色视频在线观看 | 午夜视频久久 | 久久久久久久久久久影院 | 国产一区二区免费在线 | 日韩免费成人 | 日韩一级在线观看 | 狠狠五月 | 久久午夜网站 | 欧美日本免费 | 国产白袜脚足j棉袜在线观看 | 悠悠色av | 自拍第1页| 亚洲色在线视频 | 九色91popny蝌蚪 | 超碰狠狠操 | 四虎影院在线免费播放 | 小色哥网站 | 中文字幕资源在线 | 国产精品免费无遮挡 | 性色生活片 | 色婷婷精品国产一区二区三区 | 国产日韩精品一区二区三区在线 | 久久伊人国产 | 国产寡妇亲子伦一区二区三区四区 | 97在线公开视频 | 做爰视频毛片视频 | 国产精品7777| 国产精品图片 | 免费看91视频 | 一级特黄免费视频 | 4438x全国最大成人 | 日韩精品视频在线 | 农村妇女毛片精品久久久 | 亚洲精品v日韩精品 | 国产精品对白刺激久久久 | 午夜精品久久久 | 四虎永久免费在线观看 | 自拍偷拍综合 | 亚洲图片在线 | 国外成人免费视频 | 字幕网在线观看 | 可以免费看的毛片 | 天天操天天插天天干 | 欧美激情一区二区视频 | 91成人在线网站 | 欧美成人精精品一区二区频 | 国产亚洲久久 | 亚洲爱情岛论坛永久 | 伊人网大| 欧美日韩影院 | 欧美一级日韩一级 | 国产1区在线观看 | av永久网站 | 夜夜操网站 | 超碰在线影院 | 99久热| 国产女主播一区 | 久草精品在线观看 | 碰在线视频 | 亚洲福利av| 偷拍精品一区二区三区 | 国产视频1 | 亚洲性av | 国产精品亚洲成在人线 | 日韩一级欧美一级 | 天天综合天天色 | 亚洲免费视频一区 | 国语对白永久免费 | 99精品欧美一区二区三区综合在线 | 国产美女精品一区二区 | 久操欧美 | 欧美三级网 | 黑人一级黄色片 | 久久丁香综合五月国产三级网站 | 成人免费在线视频 | 污片网站在线观看 | 男人午夜网站 | 好看的国产精品 | av日韩网 | 成人av网站在线播放 | 一级免费黄色 | 色婷综合 | 伊人av在线 | 精品伊人久久 | 都市激情校园春色亚洲 | 五月伊人网 | 一个色在线 | 国产精品丝袜视频 | 国产冒白浆 | 一区二区高清视频 | 日韩一级片免费看 | 另类视频一区 | 久久久久久高清 | www.色图 | 麻豆精品国产传媒mv男同 | 91原创视频| 91亚洲精选| 亚洲美女啪啪 | www.色中色 | 午夜资源 | 99er这里只有精品 | 污视频在线观看网站 | 上原亚衣在线观看 | 青娱乐av在线 | 91在线无精精品一区二区 | 星空大象在线观看免费播放 | av合集 | 欧洲国产精品 | 欧洲美一区二区三区亚洲 | 中文字幕精品在线视频 | brazzers欧美一区二区 | 亚洲精品国产精品国自产网站按摩 | 久久视频国产 | 日本黄色一区二区三区 | 男女视频免费观看 | 日韩av影片在线观看 | 人操人 | 96精品视频| 宅男噜噜噜一区二区三区 | 亚洲天堂视频在线观看 | 亚洲人精品 | 国产乱淫av片免费观看 | 激情一级片 | 欧美亚洲视频在线观看 | 国产在线视频在线观看 | 国产精品久久久久久久不卡 | 佐佐木希av一区二区三区 | 欧美午夜精品久久久久久浪潮 | 午夜视频在线观看网站 | 国产大片av | 一级二级三级视频 | 精品久久九 | 国产色爽 | 久久伊人成人网 | 高清视频免费在线观看 | 国产精品色哟哟 | 国产特黄大片aaaa毛片 | 亚洲成人久久精品 | 99ri在线| 久久毛片一区二区三区 | 一级成人免费 | 亚洲性在线观看 | 不卡中文 | 国产对白自拍 | 久久久久久久久久艹 | 国产乱码精品一区二区三 |