伊人久久大香线蕉综合影视_日韩精品少妇无码受不了_71pao成人国产永久免费视频_国产伦片中文免费观看_国产高清无码麻豆精品_九色综合伊人久久富二代_日韩黄色精品_日韩A∨精品日韩精品无码

Vue中使用裝飾器,我是認(rèn)真的

2020-7-7    seo達(dá)人

作為一個曾經(jīng)的Java coder, 當(dāng)我第一次看到j(luò)s里面的裝飾器(Decorator)的時候,就馬上想到了Java中的注解,當(dāng)然在實(shí)際原理和功能上面,Java的注解和js的裝飾器還是有很大差別的。本文題目是Vue中使用裝飾器,我是認(rèn)真的,但本文將從裝飾器的概念開發(fā)聊起,一起來看看吧。


通過本文內(nèi)容,你將學(xué)到以下內(nèi)容:


了解什么是裝飾器

在方法使用裝飾器

在class中使用裝飾器

在Vue中使用裝飾器

本文首發(fā)于公眾號【前端有的玩】,不想當(dāng)咸魚,想要換工作,關(guān)注公眾號,帶你每日一起刷大廠面試題,關(guān)注 === 大廠offer。

什么是裝飾器

裝飾器是ES2016提出來的一個提案,當(dāng)前處于Stage 2階段,關(guān)于裝飾器的體驗(yàn),可以點(diǎn)擊 https://github.com/tc39/proposal-decorators查看詳情。裝飾器是一種與類相關(guān)的語法糖,用來包裝或者修改類或者類的方法的行為,其實(shí)裝飾器就是設(shè)計(jì)模式中裝飾者模式的一種實(shí)現(xiàn)方式。不過前面說的這些概念太干了,我們用人話來翻譯一下,舉一個例子。


在日常開發(fā)寫bug過程中,我們經(jīng)常會用到防抖和節(jié)流,比如像下面這樣


class MyClass {

 follow = debounce(function() {

   console.log('我是子君,關(guān)注我哦')

 }, 100)

}


const myClass = new MyClass()

// 多次調(diào)用只會輸出一次

myClass.follow()

myClass.follow()

上面是一個防抖的例子,我們通過debounce函數(shù)將另一個函數(shù)包起來,實(shí)現(xiàn)了防抖的功能,這時候再有另一個需求,比如希望在調(diào)用follow函數(shù)前后各打印一段日志,這時候我們還可以再開發(fā)一個log函數(shù),然后繼續(xù)將follow包裝起來


/**

* 最外層是防抖,否則log會被調(diào)用多次

*/

class MyClass {

 follow = debounce(

   log(function() {

     console.log('我是子君,關(guān)注我哦')

   }),

   100

 )

}

上面代碼中的debounce和log兩個函數(shù),本質(zhì)上是兩個包裝函數(shù),通過這兩個函數(shù)對原函數(shù)的包裝,使原函數(shù)的行為發(fā)生了變化,而js中的裝飾器的原理就是這樣的,我們使用裝飾器對上面的代碼進(jìn)行改造


class MyClass {

 @debounce(100)

 @log

 follow() {

   console.log('我是子君,關(guān)注我哦')

 }

}

裝飾器的形式就是 @ + 函數(shù)名,如果有參數(shù)的話,后面的括號里面可以傳參


在方法上使用裝飾器

裝飾器可以應(yīng)用到class上或者class里面的屬性上面,但一般情況下,應(yīng)用到class屬性上面的場景會比較多一些,比如像上面我們說的log,debounce等等,都一般會應(yīng)用到類屬性上面,接下來我們一起來具體看一下如何實(shí)現(xiàn)一個裝飾器,并應(yīng)用到類上面。在實(shí)現(xiàn)裝飾器之前,我們需要先了解一下屬性描述符


了解一下屬性描述符

在我們定義一個對象里面的屬性的時候,其實(shí)這個屬性上面是有許多屬性描述符的,這些描述符標(biāo)明了這個屬性能不能修改,能不能枚舉,能不能刪除等等,同時ECMAScript將這些屬性描述符分為兩類,分別是數(shù)據(jù)屬性和訪問器屬性,并且數(shù)據(jù)屬性與訪問器屬性是不能共存的。


數(shù)據(jù)屬性

數(shù)據(jù)屬性包含一個數(shù)據(jù)值的位置,在這個位置可以讀取和寫入值。數(shù)據(jù)屬性包含了四個描述符,分別是


configurable

表示能不能通過delete刪除屬性,能否修改屬性的其他描述符特性,或者能否將數(shù)據(jù)屬性修改為訪問器屬性。當(dāng)我們通過let obj = {name: ''}聲明一個對象的時候,這個對象里面所有的屬性的configurable描述符的值都是true


enumerable

表示能不能通過for in或者Object.keys等方式獲取到屬性,我們一般聲明的對象里面這個描述符的值是true,但是對于class類里面的屬性來說,這個值是false


writable

表示能否修改屬性的數(shù)據(jù)值,通過將這個修改為false,可以實(shí)現(xiàn)屬性只讀的效果。


value

表示當(dāng)前屬性的數(shù)據(jù)值,讀取屬性值的時候,從這里讀??;寫入屬性值的時候,會寫到這個位置。


訪問器屬性

訪問器屬性不包含數(shù)據(jù)值,他們包含了getter與setter兩個函數(shù),同時configurable與enumerable是數(shù)據(jù)屬性與訪問器屬性共有的兩個描述符。


getter

在讀取屬性的時候調(diào)用這個函數(shù),默認(rèn)這個函數(shù)為undefined


setter

在寫入屬性值的時候調(diào)用這個函數(shù),默認(rèn)這個函數(shù)為undefined


了解了這六個描述符之后,你可能會有幾個疑問: 我如何去定義修改這些屬性描述符?這些屬性描述符與今天的文章主題有什么關(guān)系?接下來是揭曉答案的時候了。


使用Object.defineProperty

了解過vue2.0雙向綁定原理的同學(xué)一定知道,Vue的雙向綁定就是通過使用Object.defineProperty去定義數(shù)據(jù)屬性的getter與setter方法來實(shí)現(xiàn)的,比如下面有一個對象


let obj = {

 name: '子君',

 officialAccounts: '前端有的玩'

}

我希望這個對象里面的用戶名是不能被修改的,用Object.defineProperty該如何定義呢?


Object.defineProperty(obj,'name', {

 // 設(shè)置writable 是 false, 這個屬性將不能被修改

 writable: false

})

// 修改obj.name

obj.name = "君子"

// 打印依然是子君

console.log(obj.name)

通過Object.defineProperty可以去定義或者修改對象屬性的屬性描述符,但是因?yàn)閿?shù)據(jù)屬性與訪問器屬性是互斥的,所以一次只能修改其中的一類,這一點(diǎn)需要注意。


定義一個防抖裝飾器

裝飾器本質(zhì)上依然是一個函數(shù),不過這個函數(shù)的參數(shù)是固定的,如下是防抖裝飾器的代碼


/**

*@param wait 延遲時長

*/

function debounce(wait) {

 return function(target, name, descriptor) {

   descriptor.value = debounce(descriptor.value, wait)

 }

}

// 使用方式

class MyClass {

 @debounce(100)

 follow() {

   console.log('我是子君,我的公眾號是 【前端有的玩】,關(guān)注有驚喜哦')

 }

}

我們逐行去分析一下代碼


首先我們定義了一個 debounce函數(shù),同時有一個參數(shù)wait,這個函數(shù)對應(yīng)的就是在下面調(diào)用裝飾器時使用的@debounce(100)

debounce函數(shù)返回了一個新的函數(shù),這個函數(shù)即裝飾器的核心,這個函數(shù)有三個參數(shù),下面逐一分析


target: 這個類屬性函數(shù)是在誰上面掛載的,如上例對應(yīng)的是MyClass類

name: 這個類屬性函數(shù)的名稱,對應(yīng)上面的follow

descriptor: 這個就是我們前面說的屬性描述符,通過直接descriptor上面的屬性,即可實(shí)現(xiàn)屬性只讀,數(shù)據(jù)重寫等功能

然后第三行 descriptor.value = debounce(descriptor.value, wait), 前面我們已經(jīng)了解到,屬性描述符上面的value對應(yīng)的是這個屬性的值,所以我們通過重寫這個屬性,將其用debounce函數(shù)包裝起來,這樣在函數(shù)調(diào)用follow時實(shí)際調(diào)用的是包裝后的函數(shù)

通過上面的三步,我們就實(shí)現(xiàn)了類屬性上面可使用的裝飾器,同時將其應(yīng)用到了類屬性上面


在class上使用裝飾器

裝飾器不僅可以應(yīng)用到類屬性上面,還可以直接應(yīng)用到類上面,比如我希望可以實(shí)現(xiàn)一個類似Vue混入那樣的功能,給一個類混入一些方法屬性,應(yīng)該如何去做呢?


// 這個是要混入的對象

const methods = {

 logger() {

   console.log('記錄日志')

 }

}


// 這個是一個登陸登出類

class Login{

 login() {}

 logout() {}

}

如何將上面的methods混入到Login中,首先我們先實(shí)現(xiàn)一個類裝飾器


function mixins(obj) {

 return function (target) {

   Object.assign(target.prototype, obj)  

 }

}


// 然后通過裝飾器混入

@mixins(methods)

class Login{

 login() {}

 logout() {}

}

這樣就實(shí)現(xiàn)了類裝飾器。對于類裝飾器,只有一個參數(shù),即target,對應(yīng)的就是這個類本身。


了解完裝飾器,我們接下來看一下如何在Vue中使用裝飾器。


在Vue中使用裝飾器

使用ts開發(fā)Vue的同學(xué)一定對vue-property-decorator不會感到陌生,這個插件提供了許多裝飾器,方便大家開發(fā)的時候使用,當(dāng)然本文的中點(diǎn)不是這個插件。其實(shí)如果我們的項(xiàng)目沒有使用ts,也是可以使用裝飾器的,怎么用呢?


配置基礎(chǔ)環(huán)境

除了一些老的項(xiàng)目,我們現(xiàn)在一般新建Vue項(xiàng)目的時候,都會選擇使用腳手架vue-cli3/4來新建,這時候新建的項(xiàng)目已經(jīng)默認(rèn)支持了裝飾器,不需要再配置太多額外的東西,如果你的項(xiàng)目使用了eslint,那么需要給eslint配置以下內(nèi)容。


 parserOptions: {

   ecmaFeatures:{

     // 支持裝飾器

     legacyDecorators: true

   }

 }

使用裝飾器

雖然Vue的組件,我們一般書寫的時候export出去的是一個對象,但是這個并不影響我們直接在組件中使用裝飾器,比如就拿上例中的log舉例。


function log() {

 /**

  * @param target 對應(yīng) methods 這個對象

  * @param name 對應(yīng)屬性方法的名稱

  * @param descriptor 對應(yīng)屬性方法的修飾符

  */

 return function(target, name, descriptor) {

   console.log(target, name, descriptor)

   const fn = descriptor.value

   descriptor.value = function(...rest) {

     console.log(`這是調(diào)用方法【${name}】前打印的日志`)

     fn.call(this, ...rest)

     console.log(`這是調(diào)用方法【${name}】后打印的日志`)

   }

 }

}


export default {

 created() {

   this.getData()

 },

 methods: {

   @log()

   getData() {

     console.log('獲取數(shù)據(jù)')

   }

 }

}

看了上面的代碼,是不是發(fā)現(xiàn)在Vue中使用裝飾器還是很簡單的,和在class的屬性上面使用的方式一模一樣,但有一點(diǎn)需要注意,在methods里面的方法上面使用裝飾器,這時候裝飾器的target對應(yīng)的是methods。


除了在methods上面可以使用裝飾器之外,你也可以在生命周期鉤子函數(shù)上面使用裝飾器,這時候target對應(yīng)的是整個組件對象。


一些常用的裝飾器

下面小編羅列了幾個小編在項(xiàng)目中常用的幾個裝飾器,方便大家使用


1. 函數(shù)節(jié)流與防抖

函數(shù)節(jié)流與防抖應(yīng)用場景是比較廣的,一般使用時候會通過throttle或debounce方法對要調(diào)用的函數(shù)進(jìn)行包裝,現(xiàn)在就可以使用上文說的內(nèi)容將這兩個函數(shù)封裝成裝飾器, 防抖節(jié)流使用的是lodash提供的方法,大家也可以自行實(shí)現(xiàn)節(jié)流防抖函數(shù)哦


import { throttle, debounce } from 'lodash'

/**

* 函數(shù)節(jié)流裝飾器

* @param {number} wait 節(jié)流的毫秒

* @param {Object} options 節(jié)流選項(xiàng)對象

* [options.leading=true] (boolean): 指定調(diào)用在節(jié)流開始前。

* [options.trailing=true] (boolean): 指定調(diào)用在節(jié)流結(jié)束后。

*/

export const throttle =  function(wait, options = {}) {

 return function(target, name, descriptor) {

   descriptor.value = throttle(descriptor.value, wait, options)

 }

}


/**

* 函數(shù)防抖裝飾器

* @param {number} wait 需要延遲的毫秒數(shù)。

* @param {Object} options 選項(xiàng)對象

* [options.leading=false] (boolean): 指定在延遲開始前調(diào)用。

* [options.maxWait] (number): 設(shè)置 func 允許被延遲的最大值。

* [options.trailing=true] (boolean): 指定在延遲結(jié)束后調(diào)用。

*/

export const debounce = function(wait, options = {}) {

 return function(target, name, descriptor) {

   descriptor.value = debounce(descriptor.value, wait, options)

 }

}

封裝完之后,在組件中使用


import {debounce} from '@/decorator'


export default {

 methods:{

   @debounce(100)

   resize(){}

 }

}

2. loading

在加載數(shù)據(jù)的時候,為了個用戶一個友好的提示,同時防止用戶繼續(xù)操作,一般會在請求前顯示一個loading,然后在請求結(jié)束之后關(guān)掉loading,一般寫法如下


export default {

 methods:{

   async getData() {

     const loading = Toast.loading()

     try{

       const data = await loadData()

       // 其他操作

     }catch(error){

       // 異常處理

       Toast.fail('加載失敗');

     }finally{

       loading.clear()

     }  

   }

 }

}

我們可以把上面的loading的邏輯使用裝飾器重新封裝,如下代碼


import { Toast } from 'vant'


/**

* loading 裝飾器

* @param {*} message 提示信息

* @param {function} errorFn 異常處理邏輯

*/

export const loading =  function(message = '加載中...', errorFn = function() {}) {

 return function(target, name, descriptor) {

   const fn = descriptor.value

   descriptor.value = async function(...rest) {

     const loading = Toast.loading({

       message: message,

       forbidClick: true

     })

     try {

       return await fn.call(this, ...rest)

     } catch (error) {

       // 在調(diào)用失敗,且用戶自定義失敗的回調(diào)函數(shù)時,則執(zhí)行

       errorFn && errorFn.call(this, error, ...rest)

       console.error(error)

     } finally {

       loading.clear()

     }

   }

 }

}

然后改造上面的組件代碼


export default {

 methods:{

   @loading('加載中')

   async getData() {

     try{

       const data = await loadData()

       // 其他操作

     }catch(error){

       // 異常處理

       Toast.fail('加載失敗');

     }  

   }

 }

}

3. 確認(rèn)框

當(dāng)你點(diǎn)擊刪除按鈕的時候,一般都需要彈出一個提示框讓用戶確認(rèn)是否刪除,這時候常規(guī)寫法可能是這樣的


import { Dialog } from 'vant'


export default {

 methods: {

   deleteData() {

     Dialog.confirm({

       title: '提示',

       message: '確定要刪除數(shù)據(jù),此操作不可回退。'

     }).then(() => {

       console.log('在這里做刪除操作')

     })

   }

 }

}

我們可以把上面確認(rèn)的過程提出來做成裝飾器,如下代碼


import { Dialog } from 'vant'


/**

* 確認(rèn)提示框裝飾器

* @param {*} message 提示信息

* @param {*} title 標(biāo)題

* @param {*} cancelFn 取消回調(diào)函數(shù)

*/

export function confirm(

 message = '確定要刪除數(shù)據(jù),此操作不可回退。',

 title = '提示',

 cancelFn = function() {}

) {

 return function(target, name, descriptor) {

   const originFn = descriptor.value

   descriptor.value = async function(...rest) {

     try {

       await Dialog.confirm({

         message,

         title: title

       })

       originFn.apply(this, rest)

     } catch (error) {

       cancelFn && cancelFn(error)

     }

   }

 }

}

然后再使用確認(rèn)框的時候,就可以這樣使用了


export default {

 methods: {

   // 可以不傳參,使用默認(rèn)參數(shù)

   @confirm()

   deleteData() {

     console.log('在這里做刪除操作')

   }

 }

}

是不是瞬間簡單多了,當(dāng)然還可以繼續(xù)封裝很多很多的裝飾器,因?yàn)槲恼聝?nèi)容有限,暫時提供這三個。


裝飾器組合使用

在上面我們將類屬性上面使用裝飾器的時候,說道裝飾器可以組合使用,在Vue組件上面使用也是一樣的,比如我們希望在確認(rèn)刪除之后,調(diào)用接口時候出現(xiàn)loading,就可以這樣寫(一定要注意順序)


export default {

 methods: {

   @confirm()

   @loading()

   async deleteData() {

     await delete()

   }

 }

}

本節(jié)定義的裝飾器,均已應(yīng)用到這個項(xiàng)目中 https://github.com/snowzijun/vue-vant-base, 這是一個基于Vant開發(fā)的開箱即用移動端框架,你只需要fork下來,無需做任何配置就可以直接進(jìn)行業(yè)務(wù)開發(fā),歡迎使用,喜歡麻煩給一個star。

藍(lán)藍(lán)設(shè)計(jì)www.cqzjtgb.com )是一家專注而深入的界面設(shè)計(jì)公司,為期望卓越的國內(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ù)




日歷

鏈接

個人資料

存檔

美国免费a级毛片| 操出白浆在线播放| 久久久国产欧美日韩av| 国产不卡一卡二| 18禁国产床啪视频网站| 久久久国产精品麻豆| 黄频高清免费视频| 日本a在线网址| 制服诱惑二区| 国产色视频综合| 大香蕉久久成人网| 欧美日韩福利视频一区二区| 精品国产一区二区久久| 久9热在线精品视频| 一夜夜www| 国产有黄有色有爽视频| 一夜夜www| 一级,二级,三级黄色视频| 午夜福利在线观看吧| 国产成人影院久久av| 久久午夜亚洲精品久久| 一区在线观看完整版| 久久久国产成人精品二区 | 国产精华一区二区三区| 欧美精品人与动牲交sv欧美| 久久香蕉精品热| av天堂在线播放| 国产欧美日韩一区二区三| 国产免费现黄频在线看| a在线观看视频网站| 99精品久久久久人妻精品| 中出人妻视频一区二区| 精品久久久久久久久久免费视频 | 午夜老司机福利片| 99国产精品99久久久久| 99国产极品粉嫩在线观看| 大香蕉久久网| 精品无人区乱码1区二区| 亚洲精品av麻豆狂野| 老司机靠b影院| 中文字幕人妻丝袜一区二区| 日韩有码中文字幕| 精品国产国语对白av| www.自偷自拍.com| 91av网站免费观看| 夫妻午夜视频| 妹子高潮喷水视频| 久久香蕉国产精品| 久久久国产成人免费| 免费在线观看日本一区| 精品人妻1区二区| 90打野战视频偷拍视频| 亚洲精品乱久久久久久| 777久久人妻少妇嫩草av网站| 一a级毛片在线观看| 天天操日日干夜夜撸| 亚洲avbb在线观看| 在线观看免费视频日本深夜| 99国产精品免费福利视频| 午夜精品在线福利| 免费在线观看日本一区| 亚洲少妇的诱惑av| 国产成人精品无人区| 成熟少妇高潮喷水视频| www日本在线高清视频| 精品福利观看| 1024视频免费在线观看| 精品免费久久久久久久清纯 | 国产亚洲精品一区二区www | 精品久久久久久久毛片微露脸| 国产精品 国内视频| 精品国产乱码久久久久久男人| 欧美在线一区亚洲| 亚洲精品中文字幕一二三四区| 交换朋友夫妻互换小说| 欧美成狂野欧美在线观看| 国产成人av教育| 黄色丝袜av网址大全| 精品国产国语对白av| 国产视频一区二区在线看| 免费看a级黄色片| 欧美老熟妇乱子伦牲交| 精品国产乱码久久久久久男人| 亚洲人成电影观看| 十分钟在线观看高清视频www| 人人澡人人妻人| 亚洲色图av天堂| 亚洲精品在线观看二区| 国产成人精品无人区| 日韩欧美在线二视频 | 99热国产这里只有精品6| 啦啦啦视频在线资源免费观看| 伊人久久大香线蕉亚洲五| 色94色欧美一区二区| 亚洲欧美激情综合另类| 亚洲va日本ⅴa欧美va伊人久久| 国产淫语在线视频| 视频在线观看一区二区三区| 免费一级毛片在线播放高清视频 | 日本黄色视频三级网站网址 | 欧美 亚洲 国产 日韩一| 国产xxxxx性猛交| 国产亚洲欧美98| 国产精品免费大片| 正在播放国产对白刺激| 精品第一国产精品| 手机成人av网站| 亚洲 国产 在线| 丁香欧美五月| 在线天堂中文资源库| 一进一出抽搐动态| 在线十欧美十亚洲十日本专区| 国产xxxxx性猛交| 久久精品91无色码中文字幕| 成人18禁高潮啪啪吃奶动态图| 久久久久久免费高清国产稀缺| 欧美日本中文国产一区发布| 亚洲成国产人片在线观看| 久久久久国产精品人妻aⅴ院 | 国精品久久久久久国模美| 亚洲国产欧美日韩在线播放| 香蕉丝袜av| 亚洲第一欧美日韩一区二区三区| 亚洲三区欧美一区| 国产精品一区二区在线观看99| 亚洲一区高清亚洲精品| 成人特级黄色片久久久久久久| 亚洲精品美女久久久久99蜜臀| 久99久视频精品免费| av电影中文网址| 国产又爽黄色视频| 最新的欧美精品一区二区| 久久青草综合色| 极品少妇高潮喷水抽搐| 老鸭窝网址在线观看| 最近最新中文字幕大全电影3 | 国产精品 国内视频| 国产在线精品亚洲第一网站| 国产精品影院久久| 欧美在线一区亚洲| 免费在线观看日本一区| 精品国产一区二区三区四区第35| 波多野结衣一区麻豆| 精品卡一卡二卡四卡免费| 免费少妇av软件| 最新的欧美精品一区二区| 国产激情欧美一区二区| 欧美在线黄色| 亚洲熟女精品中文字幕| 热99国产精品久久久久久7| 久久久精品免费免费高清| 大香蕉久久成人网| 一本大道久久a久久精品| 一区二区日韩欧美中文字幕| 99久久国产精品久久久| 黄色成人免费大全| 国产精品自产拍在线观看55亚洲 | 亚洲成av片中文字幕在线观看| 国产麻豆69| 女性被躁到高潮视频| 免费在线观看完整版高清| 视频区图区小说| 亚洲国产精品合色在线| 美女高潮到喷水免费观看| 女人被狂操c到高潮| 国产精品免费视频内射| 国产男女超爽视频在线观看| 国产日韩一区二区三区精品不卡| 亚洲美女黄片视频| 久久九九热精品免费| 看黄色毛片网站| 国产在线观看jvid| 操出白浆在线播放| 久久久久国产精品人妻aⅴ院 | 女人爽到高潮嗷嗷叫在线视频| 国产淫语在线视频| 很黄的视频免费| 亚洲一区中文字幕在线| 90打野战视频偷拍视频| 最新美女视频免费是黄的| 999久久久国产精品视频| 精品免费久久久久久久清纯 | 国产精品自产拍在线观看55亚洲 | 五月开心婷婷网| 中出人妻视频一区二区| 女人被躁到高潮嗷嗷叫费观| 欧美日韩乱码在线| 国产精品电影一区二区三区 | 欧美大码av| 自线自在国产av| 一夜夜www| 9色porny在线观看| 国产亚洲精品第一综合不卡| 青草久久国产| 欧美激情久久久久久爽电影 | 亚洲精品久久成人aⅴ小说| 后天国语完整版免费观看| 欧美人与性动交α欧美软件| 国产亚洲欧美在线一区二区| av天堂久久9| 国产精品影院久久| 成人黄色视频免费在线看| 99久久99久久久精品蜜桃| 国产不卡一卡二| 别揉我奶头~嗯~啊~动态视频| 女性被躁到高潮视频| 久久久久精品人妻al黑| 国产片内射在线| 乱人伦中国视频| 日韩人妻精品一区2区三区| 久久国产亚洲av麻豆专区| 欧美黑人精品巨大| 99热国产这里只有精品6| 亚洲一区中文字幕在线| 黄色视频,在线免费观看| 国产精品欧美亚洲77777| 亚洲专区中文字幕在线| 国产精华一区二区三区| 国产精品一区二区精品视频观看| 99国产综合亚洲精品| 久久国产精品人妻蜜桃| 国产一区在线观看成人免费| 无人区码免费观看不卡| 激情视频va一区二区三区| 欧美日韩亚洲综合一区二区三区_| 欧美精品av麻豆av| 久久国产乱子伦精品免费另类| 两性夫妻黄色片| 热99国产精品久久久久久7| 亚洲熟妇中文字幕五十中出 | 亚洲国产精品合色在线| 亚洲精品国产精品久久久不卡| 色综合欧美亚洲国产小说| 欧美亚洲日本最大视频资源| 久久精品91无色码中文字幕| 久久久久国产精品人妻aⅴ院 | 岛国在线观看网站| 成在线人永久免费视频| 亚洲 欧美一区二区三区| 亚洲国产看品久久| 日韩有码中文字幕| 欧美日韩黄片免| cao死你这个sao货| 欧美乱色亚洲激情| 国产一区二区三区在线臀色熟女 | 激情视频va一区二区三区| 51午夜福利影视在线观看| 午夜免费鲁丝| 久久中文看片网| 久久久久久亚洲精品国产蜜桃av| 999精品在线视频| 高清黄色对白视频在线免费看| 啦啦啦在线免费观看视频4| 午夜福利一区二区在线看| 精品一区二区三区四区五区乱码| 国产成人欧美| 一区二区三区精品91| 在线十欧美十亚洲十日本专区| 国产精品九九99| 午夜久久久在线观看| 成人特级黄色片久久久久久久| 国产精品久久久人人做人人爽| 欧美日韩中文字幕国产精品一区二区三区 | 久久99一区二区三区| 日本一区二区免费在线视频| 亚洲成人手机| 免费看a级黄色片| 亚洲av熟女| 久久ye,这里只有精品| 热re99久久精品国产66热6| 亚洲av日韩精品久久久久久密| 无人区码免费观看不卡| 亚洲一区二区三区不卡视频| 在线观看一区二区三区激情| 亚洲国产欧美一区二区综合| 成人18禁高潮啪啪吃奶动态图| 欧美日韩亚洲高清精品| 欧美激情高清一区二区三区| 久久久久精品国产欧美久久久| 嫩草影视91久久| 十八禁人妻一区二区| 欧美性长视频在线观看| 精品国产一区二区三区久久久樱花| 精品国产乱子伦一区二区三区| 欧美黑人精品巨大| 国产男女内射视频| 国产一区在线观看成人免费| 亚洲第一欧美日韩一区二区三区| 波多野结衣av一区二区av| 在线观看免费午夜福利视频| 欧美 日韩 精品 国产| 视频在线观看一区二区三区| 欧美精品亚洲一区二区| 久久99一区二区三区| 欧美日韩国产mv在线观看视频| 老汉色av国产亚洲站长工具| 久久久久久久久免费视频了| 欧美老熟妇乱子伦牲交| 夫妻午夜视频| 久久久精品免费免费高清| 成年女人毛片免费观看观看9 | 国产色视频综合| 国产精品1区2区在线观看. | 亚洲一区二区三区不卡视频| 久久国产精品大桥未久av| 99精品在免费线老司机午夜| 美女高潮喷水抽搐中文字幕| 国产精品一区二区免费欧美| 精品乱码久久久久久99久播| 精品第一国产精品| 免费在线观看完整版高清| 夫妻午夜视频| av视频免费观看在线观看| 老司机午夜福利在线观看视频| 99久久人妻综合| 午夜精品在线福利| 婷婷成人精品国产| 中文欧美无线码| 国产精品99久久99久久久不卡| 中文字幕另类日韩欧美亚洲嫩草| 亚洲专区字幕在线| 黄频高清免费视频| 欧美性长视频在线观看| 最近最新中文字幕大全免费视频| 欧美日韩瑟瑟在线播放| 亚洲国产精品一区二区三区在线| 色婷婷久久久亚洲欧美| 高清黄色对白视频在线免费看| 无限看片的www在线观看| 90打野战视频偷拍视频| 9191精品国产免费久久| 国产精品一区二区在线观看99| 国精品久久久久久国模美| 亚洲久久久国产精品| 国产高清国产精品国产三级| 久久精品国产清高在天天线| 国内久久婷婷六月综合欲色啪| 国产在线观看jvid| 大码成人一级视频| 久久精品熟女亚洲av麻豆精品| 精品久久蜜臀av无| 亚洲国产看品久久| 欧美国产精品一级二级三级| 80岁老熟妇乱子伦牲交| 亚洲欧洲精品一区二区精品久久久| 午夜福利乱码中文字幕| 在线播放国产精品三级| 1024香蕉在线观看| 9色porny在线观看| 久久久久精品人妻al黑| 丁香六月欧美| 国产精品二区激情视频| 久久久国产成人精品二区 | 亚洲国产看品久久| tocl精华| 女性被躁到高潮视频| 一个人免费在线观看的高清视频| 国产激情久久老熟女| 久久人人97超碰香蕉20202| 亚洲精品自拍成人| 亚洲自偷自拍图片 自拍| 啦啦啦 在线观看视频| 久久午夜综合久久蜜桃| 午夜福利视频在线观看免费| 一边摸一边抽搐一进一小说 | 亚洲精品美女久久久久99蜜臀| 国产激情久久老熟女| 日韩欧美国产一区二区入口| 制服诱惑二区| 黄色成人免费大全| 狠狠婷婷综合久久久久久88av| 一级毛片女人18水好多| 久热这里只有精品99| 精品一区二区三区四区五区乱码| 一区二区三区激情视频| 99国产综合亚洲精品| 人妻丰满熟妇av一区二区三区 | 中亚洲国语对白在线视频| 亚洲成人手机| 午夜福利乱码中文字幕| 人人妻人人澡人人看| 欧美亚洲日本最大视频资源| 青草久久国产| 国产精品综合久久久久久久免费 | 日韩三级视频一区二区三区| 亚洲中文日韩欧美视频| 国产av精品麻豆| 久久精品国产综合久久久| 国产精品av久久久久免费| 欧美乱码精品一区二区三区| 性色av乱码一区二区三区2| 9191精品国产免费久久| а√天堂www在线а√下载 | 久久性视频一级片| 三上悠亚av全集在线观看| 亚洲人成电影免费在线| 极品少妇高潮喷水抽搐| 精品午夜福利视频在线观看一区| 久久精品国产亚洲av香蕉五月 | 人人妻人人澡人人爽人人夜夜| 男男h啪啪无遮挡| 国产男女超爽视频在线观看| 久久精品亚洲熟妇少妇任你| 久久久久久久久久久久大奶| 精品国产亚洲在线| 18禁黄网站禁片午夜丰满| av线在线观看网站| 久久精品国产99精品国产亚洲性色 | 亚洲成a人片在线一区二区| 亚洲成人免费av在线播放| 大码成人一级视频| 另类亚洲欧美激情| 人人澡人人妻人| 黄色视频不卡| 午夜福利影视在线免费观看| 亚洲一码二码三码区别大吗| 一边摸一边做爽爽视频免费| 中文字幕人妻熟女乱码| 涩涩av久久男人的天堂| 美女扒开内裤让男人捅视频| 日韩欧美三级三区| 一级毛片高清免费大全| 香蕉丝袜av| 又黄又爽又免费观看的视频| a在线观看视频网站| 欧美亚洲日本最大视频资源| 极品人妻少妇av视频| 国产一区有黄有色的免费视频| 欧美日韩亚洲国产一区二区在线观看 | 久久精品国产亚洲av高清一级| 国产乱人伦免费视频| 这个男人来自地球电影免费观看| 亚洲精品中文字幕在线视频| 极品人妻少妇av视频| 国产精品久久久av美女十八| 正在播放国产对白刺激| 亚洲精品粉嫩美女一区| 我的亚洲天堂| 午夜福利欧美成人| av线在线观看网站| 亚洲人成77777在线视频| 校园春色视频在线观看| 久久精品国产a三级三级三级| 欧美亚洲 丝袜 人妻 在线| 天天躁日日躁夜夜躁夜夜| 大型av网站在线播放| 久久人妻av系列| 久久狼人影院| 亚洲精品乱久久久久久| 国产深夜福利视频在线观看| 欧美色视频一区免费| 国产视频一区二区在线看| 久久久久久久精品吃奶| 搡老熟女国产l中国老女人| 岛国毛片在线播放| 国产日韩一区二区三区精品不卡| 一区福利在线观看| 大码成人一级视频| 涩涩av久久男人的天堂| 人人妻人人澡人人看| 午夜视频精品福利| 欧美精品一区二区免费开放| 国产99白浆流出| 久久午夜亚洲精品久久| 一边摸一边做爽爽视频免费| 夜夜爽天天搞| 国产无遮挡羞羞视频在线观看| 国产成人一区二区三区免费视频网站| 精品一区二区三卡| 欧美久久黑人一区二区| 亚洲av日韩精品久久久久久密| av不卡在线播放| 久久天躁狠狠躁夜夜2o2o| 999久久久精品免费观看国产| 日本wwww免费看| 丁香欧美五月| 亚洲情色 制服丝袜| 女性生殖器流出的白浆| 色老头精品视频在线观看| 在线观看免费日韩欧美大片| 午夜免费成人在线视频| 黑人猛操日本美女一级片| 天堂√8在线中文| 天天躁日日躁夜夜躁夜夜| 免费人成视频x8x8入口观看| 12—13女人毛片做爰片一| 国产成人免费观看mmmm| 他把我摸到了高潮在线观看| 免费一级毛片在线播放高清视频 | 精品视频人人做人人爽| 人人妻人人添人人爽欧美一区卜| 国产一区二区三区在线臀色熟女 | 黄色女人牲交| 久久国产亚洲av麻豆专区| 亚洲精品中文字幕一二三四区| 中文亚洲av片在线观看爽 | 在线观看免费视频网站a站| 黄色a级毛片大全视频| 亚洲av电影在线进入| 9热在线视频观看99| 一区在线观看完整版| 无遮挡黄片免费观看| av天堂久久9| 露出奶头的视频| 97人妻天天添夜夜摸| 国产av又大| 国产男靠女视频免费网站| 黑人猛操日本美女一级片| 岛国毛片在线播放| 激情在线观看视频在线高清 | 亚洲国产毛片av蜜桃av| 欧美大码av| 亚洲av电影在线进入| 欧美精品亚洲一区二区| bbb黄色大片| 精品视频人人做人人爽| 一级毛片精品| 亚洲av欧美aⅴ国产| 欧美日韩亚洲高清精品| 国产亚洲欧美精品永久| 久久久久精品人妻al黑| www日本在线高清视频| 后天国语完整版免费观看| 欧美av亚洲av综合av国产av| 黄色a级毛片大全视频| 久久人妻福利社区极品人妻图片| 天堂俺去俺来也www色官网| 免费在线观看亚洲国产| 午夜免费观看网址| 99久久99久久久精品蜜桃| 麻豆av在线久日| 乱人伦中国视频| 国产高清videossex| 亚洲av电影在线进入| 亚洲欧美日韩另类电影网站| 国产成人一区二区三区免费视频网站| 黄色女人牲交| 久久精品国产综合久久久| 丝袜人妻中文字幕| 精品亚洲成国产av| 精品第一国产精品| 中文字幕另类日韩欧美亚洲嫩草| 妹子高潮喷水视频| 婷婷丁香在线五月| 在线天堂中文资源库| 亚洲一区中文字幕在线| 一进一出抽搐动态| 日韩欧美一区二区三区在线观看 | 亚洲精品美女久久久久99蜜臀| 99国产精品一区二区三区| 亚洲一卡2卡3卡4卡5卡精品中文| 国产一区在线观看成人免费| 国精品久久久久久国模美| 亚洲av欧美aⅴ国产| 自线自在国产av| 国产精品永久免费网站| 国产男女超爽视频在线观看| 日韩中文字幕欧美一区二区| 久久久久视频综合| 欧美日本中文国产一区发布| 国产乱人伦免费视频| 国产成人一区二区三区免费视频网站| 热99久久久久精品小说推荐| 在线观看免费高清a一片| 天天操日日干夜夜撸| 欧美+亚洲+日韩+国产| 欧美精品av麻豆av| 少妇裸体淫交视频免费看高清 | 99久久人妻综合| 中文字幕最新亚洲高清| 狠狠婷婷综合久久久久久88av| 婷婷成人精品国产| 国产精品久久电影中文字幕 | 亚洲精品久久午夜乱码| 人成视频在线观看免费观看| 老熟女久久久| 久久国产精品人妻蜜桃| 男女免费视频国产| 欧美+亚洲+日韩+国产| 欧美大码av| 精品免费久久久久久久清纯 | 亚洲综合色网址| 国产午夜精品久久久久久| 欧美日韩精品网址| 日本vs欧美在线观看视频| 人人妻人人爽人人添夜夜欢视频| 岛国在线观看网站| 精品国产一区二区久久| 免费在线观看完整版高清| 女性被躁到高潮视频| 精品国产一区二区久久| 亚洲男人天堂网一区| 亚洲午夜精品一区,二区,三区| 精品国产一区二区久久| 一本一本久久a久久精品综合妖精| 欧美日韩瑟瑟在线播放| 美女 人体艺术 gogo| 欧美老熟妇乱子伦牲交| 色婷婷久久久亚洲欧美| 精品国产一区二区久久| 美女高潮喷水抽搐中文字幕| 老熟妇乱子伦视频在线观看| 日本撒尿小便嘘嘘汇集6| 亚洲熟妇中文字幕五十中出 | 久久天堂一区二区三区四区| 国产免费男女视频| 女警被强在线播放| 免费在线观看完整版高清| 色老头精品视频在线观看| 老司机午夜十八禁免费视频| 亚洲av美国av| 亚洲色图av天堂| 十分钟在线观看高清视频www| 国产午夜精品久久久久久| 麻豆乱淫一区二区|