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

讓人愛不釋手的 JS 擴展操作符13種寫法

開發 前端
擴展操作符給我最大的印象就是,這玩意還挺方便的,然而最近寫代碼的時候經常性的遇到需要使用擴展操作符的場景,所以我干脆在網上找了些資料,把平時常見的應用場景給羅列了下,發現這個操作符是真的強大,有多強大?來看看下面這些用法吧。

[[377080]]

 我相信你一定或多或少的接觸或使用過 JS 中的擴展操作符(Spread Operator),在基本形式中,擴展操作符看起來像三個點,比如如下這樣:

  1. [...arr] 

而實際上,它也就是這么用的,但是如果事情有這么簡單,就不用我在這里寫了。擴展操作符給我最大的印象就是,這玩意還挺方便的,然而最近寫代碼的時候經常性的遇到需要使用擴展操作符的場景,所以我干脆在網上找了些資料,把平時常見的應用場景給羅列了下,發現這個操作符是真的強大,有多強大?來看看下面這些用法吧。

1. 字符串轉數組

字符串轉數組最普遍的做法是這樣:

  1. let str = 'hello' 
  2. let arr = str.split(''
  3. console.log(arr)  // ['h''e''l''l''o'

而使用了擴展操作符后可以這樣:

  1. let str = 'hello' 
  2. let arr = [...str] 
  3. console.log(arr)  // ['h''e''l''l''o'

2. 將類數組轉換為數組

在 JS 中有一種數據結構叫做 NodeList,它和數組很相似,也被叫做“類數組”,類數組是什么?在 MDN 中是這么定義它的:

  • “類數組:擁有一個 length 屬性和若干索引屬性的任意對象。

類數組有哪些呢?以下這些可以看成是類數組:

  • NodeList:document.querySelectorAll() 返回的對象;
  • HTMLCollection:document.getElementsByTagName() 返回的對象;
  • Arguments:函數里的參數對象;

類數組沒有數組的一些方法比如 push、map 等,所以經常需要將它們轉成數組,而通常我們是這么轉化的:

  1. let nodeList = document.querySelectorAll('div'
  2. console.log(nodeList instanceof NodeList)  // true 
  3.  
  4. let arr = Array.apply(null, nodeList) 
  5. console.log(arr instanceof Array)  // true 
  6.  
  7. // 或者 
  8. let arr2 = [].slice.call(nodeList) 
  9. console.log(arr2 instanceof Array)  // true 
  10.  
  11. // 又或者 
  12. let arr3 = Array.from(nodeList) 
  13. console.log(arr3 instanceof Array)  // true 

而有了擴展操作符可以這么做:

  1. let nodeList = document.querySelectorAll('div'
  2. let arr = [...nodeList] 
  3. console.log(arr instanceof Array)  // true 

3. 向數組中添加項

往數組中添加幾項通常這樣操作:

  1. let arr = [5] 
  2.  
  3. // 從頭部添加 
  4. arr.unshift(1, 2) 
  5. console.log(arr)  // [1, 2, 5] 
  6.  
  7. // 從尾部添加 
  8. arr.push(6, 7) 
  9. console.log(arr)  // [1,2, 5, 6, 7] 
  10.  
  11. // 從任意位置添加 
  12. arr.splice(2, 0, 3, 4) 
  13. console.log(arr)  // [1,2, 3, 4, 5, 6, 7] 

使用擴展操作符后:

  1. let arr = [3, 4] 
  2. arr = [1, 2, ...arr, 5, 6] 
  3. console.log(arr)  // [1, 2, 3, 4, 5, 6] 

4. 拷貝數組和對象

通常拷貝一個數組,可以這么做:

  1. let arr = [1, 3, 5, 7] 
  2. let arr2 = arr.concat() 
  3.  
  4. // 或者 
  5. let arr3 = arr.slice() 
  6. arr[0] = 2 
  7. console.log(arr)   // [2, 3, 5, 7] 
  8. console.log(arr2)  // [1, 3, 5, 7] 
  9. console.log(arr3)  // [1, 3, 5, 7] 

但是有了擴展操作符,拷貝數組就能寫得很簡單:

  1. let arr = [1, 3, 5, 7] 
  2. let arr2 = [...arr] 
  3. arr[0] = 2 
  4. console.log(arr2)  // [1, 3, 5, 7] 

同樣的,擴展操作符還能拷貝對象。拷貝對象的通常做法:

  1. let person = { name'布蘭', age: 12} 
  2. let p2 = Object.assign({}, person) 
  3. person.age = 20 
  4. console.log(person)  // { name'布蘭', age: 20 } 
  5. console.log(p2)      // { name'布蘭', age: 12 } 

有了擴展操作符,拷貝一個對象就相當方便了:

  1. let person = { name'布蘭', age: 12 } 
  2. let p2 = {...person} 
  3. person.age = 20 
  4. console.log(person)  // { name'布蘭', age: 20 } 
  5. console.log(p2)      // { name'布蘭', age: 12 } 
  6.  
  7. // 甚至還可以這么寫 
  8. let {...p3} = person 
  • “注意:擴展操作符只能深拷貝結構為一層的對象,如果對象是兩層的結構,那么使用擴展操作符拷貝會是淺拷貝。

5. 合并數組或對象

數組合并通常是這么做的:

  1. let arr1 = [1, 3, 5] 
  2. let arr2 = [2, 4, 6] 
  3. let arr3 = arr1.concat( arr2 ) 
  4. console.log(arr3)  // [1, 3, 5, 2, 4, 6] 

使用擴展操作符后,可以這么寫:

  1. let arr1 = [1, 3, 5] 
  2. let arr2 = [2, 4, 6] 
  3. let arr3 = [...arr1, ...arr2] 
  4. console.log(arr3)  // [1, 3, 5, 2, 4, 6] 

對了,它除了能合并數組外還能合并對象呢。合并對象,通常的做法是:

  1. let p1 = { name'布蘭' } 
  2. let p2 = { age: 12 } 
  3. let p3 = Object.assign({}, p1, p2) 
  4. console.log(p3)  // { name'布蘭', age: 12} 

用擴展操作符合并對象:

  1. let p1 = { name'布蘭' } 
  2. let p2 = { age: 12 } 
  3. let p3 = { ...p1, ...p2 } 
  4. console.log(p3)  // { name'布蘭', age: 12} 

6. 解構對象

經常我們給對象設置參數的時候會這么做:

  1. let person = { 
  2.     name'布蘭'
  3.     age: 12, 
  4.     sex: 'male' 
  5. let name = person.name 
  6. let age = person.age 
  7. let sex = person.sex 

而有了擴展操作符,我們就可以這么寫,不過其實如下這種寫法并不是擴展操作符的寫法🤣,而是剩余操作符的寫法,雖然寫出來后看起來差不多,但就在操作對象這一點上,基本上可以認為它和擴展操作符是相反的操作,擴展操作符是用來展開對象的屬性到多個變量上,而剩余操作符是用來把多個參數凝聚到一個變量上。

  1. let person = { 
  2.     name'布蘭'
  3.     age: 12, 
  4.     sex: 'male' 
  5. let { name, ...reset } = person 
  6. console.log(name)   // '布蘭' 
  7. console.log(reset)  // { age: 12, sex: 'male' } 

7. 給對象添加屬性

給對象加屬性通常這樣加:

  1. let person = { name'布蘭' } 
  2. person.age = 12 
  3. console.log(person)  // { name'布蘭', age: 12 } 

使用擴展操作符給對象添加屬性:

  1. let person = { name'布蘭' } 
  2. person = {...person, age: 12} 
  3. console.log(person)  // { name'布蘭', age: 12 } 

關于使用擴展操作符給對象添加屬性,這里有 2 個小技巧:

1.給新對象設置默認值:

  1. // 默認 person 對象的 age 屬性值 為 12 
  2. let person = {age: 12, ...{ name'布蘭' } } 
  3. console.log(person)  // { age: 12, name'布蘭' }  

2.重寫對象屬性

  1. let person = { name'布蘭', age: 12 } 
  2.  
  3. // person 對象的 age 屬性被重寫為 20 
  4. person = {...person, age: 20 } 
  5. console.log(person)  // { name'布蘭', age: 20 } 

8. 設置對象 Getter

設置對象 Getter 通常做法是這樣:

  1. let person = { name'布蘭' } 
  2. Object.defineProperty(person, 'age', { 
  3.     get() { return 12 }, 
  4.     enumerable: true
  5.     configurable: true 
  6. }) 
  7. console.log(person.age)  // 12 

而有了擴展操作符后可以這么寫:

  1. let person = { name'布蘭' } 
  2. person = { 
  3.     ...person,  
  4.     get age() { return 12 } 
  5. console.log(person.age)  // 12 

9. 將數組作為函數參數展開

如果我們有一個形參是多個參數的函數,但是當調用的時候發現入參卻是一個數組,常規做法是這樣:

  1. let arr = [1, 3, 5] 
  2. function fn(a, b, c) { }  
  3. fn.apply(null, arr) 

使用擴展操作符后,就簡單多了:

  1. let arr = [1, 3, 5] 
  2. function fn(a, b, c) { }  
  3. fn(...arr) 

10. 無限參數的函數

如果有這么一個累加函數,他會把所有傳遞進來的參數都加起來,普通做法是把參數都整合到數組里,然后這樣做:

  1. function doSum(arr) { 
  2.     return arr.reduce((acc, cur) => acc + cur) 
  3. console.log( doSum([1, 3]) )     // 4 
  4. console.log( doSum([1, 3, 5]) )  // 9 

如果參數不是數組,而是需要一個個傳遞,相當于函數必須支持無限參數,那可能會這么做:

  1. function doSum() { 
  2.     let sum = 0 
  3.     for(let i = 0, l = arguments.length; i < l; i++){ 
  4.         sum += arguments[i] 
  5.     } 
  6.     return sum 
  7.      
  8.     // 或者 
  9.     // let args = [].slice.call(arguments)  
  10.     // return args.reduce((acc, cur) => acc + cur) 
  11. console.log( doSum(1, 3) )        // 4 
  12. console.log( doSum(1, 3, 5) )     // 9 
  13. console.log( doSum(1, 3, 5, 7) )  // 16 

而有了擴展操作符,就簡單多了:

  1. function doSum(...arr) { 
  2.     return arr.reduce((acc, cur) => acc + cur) 
  3. console.log( doSum(1, 3) )        // 4 
  4. console.log( doSum(1, 3, 5) )     // 9 
  5. console.log( doSum(1, 3, 5, 7) )  // 16 

11. 擴展函數的剩余參數

有的時候一個函數需要傳遞很多的參數,比如小程序頁面(WePY)的 onLoad 生命周期函數里就可能有很多別的頁面傳遞過來的參數,然后還需要在函數里進行一些數據初始化工作,這樣一來就會顯得很臃腫不美觀,比如:

  1. function init(a, b, x, y) { 
  2.     // 進行一系列初始化數據工作 

而使用了擴展操作符后,我們就可以按照業務把參數進行解構,把本該在一個函數里進行初始化的工作拆分成多個,可以這么做:

  1. function other( x, y ) {} 
  2. function init(a, b, ...restConfig) { 
  3.     // 使用 a 和 b 參數進行操作 
  4.     // 其余參數傳給原始函數 
  5.     return other( ...restConfig ) 

12. 結合 Math 函數使用

比如當需要對一個數組求最大值的時候,通常會這么做:

  1. let arr = [3, 1, 8, 5, 4] 
  2. function max(arr) { 
  3.     return [].concat(arr).sort((a, b) => b - a) 
  4. console.log(max(arr)[0])  // 8 
  5.  
  6. // 或者 
  7. arr.reduce((acc, cur) => Math.max(acc, cur))  // 8 
  8.  
  9. // 又或者 
  10. Math.max.apply(null, arr)  // 8 

但是使用擴展操作符后,能夠把給數組求最大值寫得更加簡潔:

  1. let arr = [3, 1, 8, 5, 4] 
  2. let max = Math.max(...arr) 
  3. console.log(max)  // 8 

13. 在 new 表達式中使用

假設有一個數組格式的日期,想要通過 Date 構造函數創建一個日期實例的話,可能會這么做:

  1. let arr = [2021, 1, 1] 
  2. let date = new Date([].toString.call(arr)) 
  3. console.log(date)  // 'Mon Feb 01 2021 00:00:00 GMT+0800 (中國標準時間)' 
  4.  
  5. // 或者 
  6. let date2 = new (Function.prototype.bind.apply( 
  7.     Date,  
  8.     [null].concat(arr) 
  9. )) 
  10. console.log(date2)  // 'Mon Feb 01 2021 00:00:00 GMT+0800 (中國標準時間)'  

而有了擴展操作符就簡單多了:

  1. let arr = [2021, 1, 1] 
  2. let date = new Date(...arr) 
  3. console.log(date)  // 'Mon Feb 01 2021 00:00:00 GMT+0800 (中國標準時間)' 

總結

這個操作符真可謂使用簡單無腦,但是功能效率上不得不說很強大,所以我們要做的就是只要記住在什么時候使用它就好了,于是乎為了讓大家能更好的記住這 13 種使用場景,我特意做了一個圖,方便大家記憶,是不是很貼?。以上這些只列了 13 種寫法,我覺得作為一個這么強大的操作符,肯定有更多使用的場景。


 

責任編輯:姜華 來源: 大海我來了
相關推薦

2009-08-29 08:41:07

Windows 7新功能

2011-09-16 09:06:20

Smalltalk

2021-02-02 21:42:30

VS Code編輯器開發

2021-01-18 09:55:46

Spring代碼Java

2010-12-08 09:59:10

CSS

2021-12-09 13:30:17

微軟

2021-04-13 10:07:08

Python軟件包編程語言

2021-04-25 10:15:38

Python編程語言軟件包

2021-01-24 11:55:40

spring升華代碼的技巧開發

2011-03-31 14:22:28

Chrome插件

2024-07-24 08:33:06

JavaScript匯編語言

2011-05-12 09:12:16

Ubuntu 11.0

2017-05-24 18:00:13

AndroidAndroid DatView

2013-05-06 22:52:10

智能手機交互方式用戶體驗

2024-12-17 15:00:00

Python代碼

2016-05-05 10:54:53

Android開發應用

2023-07-04 08:19:25

IDEA插件

2021-01-11 08:21:34

spring升華代碼的技巧開發

2020-11-03 15:10:55

Spring Batc框架Java

2023-07-18 08:46:34

開發必備軟件工具
點贊
收藏

51CTO技術棧公眾號

免费不卡av| 国产免费一区二区三区最新不卡| 啪啪国产精品| 日韩欧美视频一区二区三区| 日韩在线电影一区| aaaa一级片| 国产女优一区| yellow中文字幕久久| 中文字幕人妻熟女在线| 亚洲黄色中文字幕| 亚洲色图视频网| 精品无人乱码一区二区三区的优势 | 日韩麻豆第一页| 污视频网站观看| av剧情在线观看| 国产精品国产三级国产专播品爱网| 日韩一区精品视频| 亚洲视频axxx| 久久久久久久久久影视| 美女色狠狠久久| 亚洲va欧美va天堂v国产综合| 日韩欧美在线观看强乱免费| 国产91免费在线观看| 日韩中文欧美在线| 隔壁老王国产在线精品| 妖精视频在线观看免费 | 国产精品一国产精品k频道56| 中文字幕欧美专区| 成年人网站免费看| 一区三区自拍| 7777精品伊人久久久大香线蕉超级流畅 | 少妇伦子伦精品无吗| 成人国产精品| 日本丶国产丶欧美色综合| 激情成人开心网| 成人看片免费| 中文字幕在线播放不卡一区| 日本在线观看一区| 五月婷婷久久久| 国产不卡高清在线观看视频| 成人黄色免费片| 亚洲大尺度在线观看| 国产精品日韩| 69久久夜色精品国产7777| 免费在线观看黄色av| 午夜精品视频一区二区三区在线看| 亚洲欧洲一区二区三区久久| 国产黄色网址在线观看| 另类ts人妖一区二区三区| 日韩免费高清视频| 性生活一级大片| **国产精品| 欧美日韩国产另类不卡| 少妇网站在线观看| yw.尤物在线精品视频| 色菇凉天天综合网| 无人在线观看的免费高清视频| 毛片无码国产| 色噜噜狠狠一区二区三区果冻| 久久久免费视频网站| 电影一区二区三| 日本电影亚洲天堂一区| 亚洲第一中文av| 97久久中文字幕| 欧美一区二区三区在线观看视频 | 亚洲午夜久久久久久久| 级毛片内射视频| 成人羞羞视频播放网站| 中文字幕日韩欧美在线| 久久99久久99精品免费看小说| 亚洲精品成人| 性日韩欧美在线视频| 日韩字幕在线观看| 久久五月激情| 国产欧美 在线欧美| 国产又黄又粗又猛又爽| 国产精品亚洲人在线观看| 96久久精品| 天堂а在线中文在线无限看推荐| 久久亚洲春色中文字幕久久久| 欧美一区二区三区四区在线观看地址| www视频在线观看免费| 国产精品美日韩| av在线免费观看国产| 色吧亚洲日本| 欧美日韩免费观看一区二区三区| 亚洲视频在线不卡| 黄色成人美女网站| 国产亚洲视频在线| 中文字幕av播放| 99亚洲视频| 国产精品自产拍在线观看| 99久久久久久久| 91老师片黄在线观看| 亚洲精品在线视频观看| 国产第一页在线视频| 色综合久久天天综合网| 亚洲黄色av片| 天堂av一区二区三区在线播放| 中日韩午夜理伦电影免费| 免费一级黄色大片| 男女男精品视频| 国产美女精品久久久| 极品美乳网红视频免费在线观看| 亚洲欧美日韩一区二区| 欧美日韩在线成人| 国产精品高潮呻吟久久久久| 在线视频日本亚洲性| 国产无遮挡又黄又爽又色| 人妖欧美一区二区| 国产亚洲精品美女久久久m| av资源网在线观看| 天天综合色天天| 善良的小姨在线| 欧美系列电影免费观看| 久久人91精品久久久久久不卡| 亚洲视频一区二区三区四区| 91丝袜国产在线播放| 日韩video| 成人性片免费| 亚洲一二三在线| 日韩三级视频在线| 国产一区高清在线| 亚洲精品在线视频观看| 黑人巨大精品| 日韩不卡中文字幕| 精品一级少妇久久久久久久| 精品在线免费观看| 先锋在线资源一区二区三区| 中文在线免费视频| 日韩亚洲电影在线| 亚洲人与黑人屁股眼交| 免费观看一级特黄欧美大片| 蜜桃视频在线观看成人| 黄色aa久久| 精品福利视频一区二区三区| √天堂中文官网8在线| 青娱乐精品视频| 日韩av一区二区三区在线观看| 第84页国产精品| 亚洲女人天堂视频| 婷婷激情五月网| 99久久夜色精品国产网站| 欧美性潮喷xxxxx免费视频看| 精品亚洲a∨一区二区三区18| 自拍偷拍亚洲一区| 一区二区视频播放| 国产精品青草综合久久久久99| 91蝌蚪视频在线观看| 啄木系列成人av电影| 78m国产成人精品视频| 天堂中文资源在线观看| 欧美日韩精品在线播放| 激情综合丁香五月| 国产精品亚洲综合久久| 美女黄毛**国产精品啪啪| 在线亚洲人成| 国产一区二区三区三区在线观看| 国产91精品看黄网站在线观看| 久久久91精品国产一区二区三区| 情侣黄网站免费看| 久久国产综合| 亚洲va久久久噜噜噜| 91麻豆免费在线视频| 日韩美一区二区三区| 久久精品性爱视频| 26uuu欧美日本| 91极品视频在线观看| 天天影视欧美综合在线观看| 91久久精品www人人做人人爽| 日本在线视频网址| 日韩成人网免费视频| 中文字幕一区二区三区四区欧美| 国产精品久久久久久久久晋中| 色男人天堂av| 99视频精品| 亚洲国产精品综合| 一区二区日韩| 欧美亚洲成人xxx| aaa日本高清在线播放免费观看| 欧美人狂配大交3d怪物一区| 久视频在线观看| 久久久噜噜噜久噜久久综合| 依人在线免费视频| 一区二区自拍| 亚洲精品在线免费看| 91蜜桃臀久久一区二区| 日本亚洲精品在线观看| 黄网站视频在线观看| 亚洲精品第一国产综合精品| 亚洲天堂视频在线播放| 亚洲另类在线一区| 国产精品久久AV无码| 免费观看一级特黄欧美大片| 免费人成在线观看视频播放| av一区二区在线播放| aaa级精品久久久国产片| 韩日成人影院| 欧美国产视频一区二区| 国产视频二区在线观看| 精品日韩成人av| 最近日韩免费视频| 亚洲国产视频在线| 永久免费观看片现看| 99久久精品国产观看| 日本国产一级片| 噜噜噜91成人网| 女人帮男人橹视频播放| 日韩精品免费一区二区三区| 久久精品综合一区| 精品国产亚洲一区二区在线观看| 日本久久中文字幕| 成人福利影视| 久久精品久久久久电影| 黄色大片在线看| 亚洲激情小视频| 国产黄频在线观看| 欧美日韩精品二区第二页| 中国一级特黄毛片| 亚洲一级在线观看| 男人的午夜天堂| 国产精品日韩成人| 色一情一交一乱一区二区三区| 成人毛片在线观看| 香蕉网在线视频| 国模无码大尺度一区二区三区| 日本成人在线免费视频| 亚洲作爱视频| 国产人妻777人伦精品hd| 韩国av一区| 黄色三级中文字幕| 综合精品一区| 热这里只有精品| 午夜久久免费观看| 国产av不卡一区二区| 日韩欧美精品一区| 手机成人在线| 精品一区不卡| 日韩av大全| 成人黄色av| 亚洲bbw性色大片| 不卡在线一区二区| 亚洲精品日韩精品| 成人精品中文字幕| 亚洲精品第一区二区三区| 日本久久精品| 宅男av一区二区三区| 五月天久久久| 免费观看亚洲视频| 国内精品福利| 日本丰满少妇xxxx| 国产日韩一区| 国产熟女高潮视频| 日韩精品福利网| 婷婷激情四射五月天| 久久99精品视频| 搡的我好爽在线观看免费视频| 国产麻豆精品在线观看| 日本天堂在线播放| 99久久99久久精品免费看蜜桃| 成人免费无码大片a毛片| 91在线免费播放| 日韩乱码人妻无码中文字幕久久| 日本一区免费视频| 一级片黄色录像| 一区二区三区四区乱视频| 国语对白一区二区| 欧美性猛xxx| 中文字幕在线视频第一页| 91精品国产黑色紧身裤美女| 亚洲第一页在线观看| 日韩av影片在线观看| 国产视频网站在线| 久久精品夜夜夜夜夜久久| 性国产高清在线观看| 51久久精品夜色国产麻豆| 日韩经典一区| 不卡一区二区三区视频| 欧美日韩夜夜| 亚洲综合五月天| 最新国产拍偷乱拍精品 | 精品爆乳一区二区三区无码av| 亚洲一区二区在线播放相泽| 丁香六月婷婷综合| 欧美日韩国产综合草草| 亚洲AV午夜精品| 亚洲男人天堂2024| 国产在线观看91| 欧美一级片久久久久久久| 亚瑟国产精品| 久久精品女人的天堂av| 久久在线视频| 免费观看国产精品视频| 麻豆免费看一区二区三区| 中文字幕无人区二| 国产午夜精品在线观看| 麻豆91精品91久久久| 91福利社在线观看| 亚洲第一页视频| 色噜噜狠狠狠综合曰曰曰88av| 不卡视频观看| 亚洲va久久久噜噜噜| 亚洲瘦老头同性70tv| www婷婷av久久久影片| 日本视频免费一区| a天堂视频在线观看| 综合电影一区二区三区| 天天爱天天做天天爽| 精品日韩在线观看| 免费av不卡| 国产精品久久久91| 牛牛影视一区二区三区免费看| www.亚洲一区二区| 日韩高清电影一区| 一区二区三区少妇| 亚洲影视资源网| 91国产精品一区| 国产亚洲精品日韩| 女人让男人操自己视频在线观看 | 亚洲春色一区二区三区| 中文字幕欧美在线| 日韩成人影音| 免费在线一区二区| 亚洲精品激情| 亚洲一级Av无码毛片久久精品| 亚洲欧美偷拍三级| 国产精品怡红院| 日韩在线观看免费av| 写真福利精品福利在线观看| 久久精品一区二区三区不卡免费视频| 黄色av一区| 欧美图片自拍偷拍| 亚洲乱码中文字幕| 国产白浆在线观看| 蜜月aⅴ免费一区二区三区| 日韩亚洲国产免费| 一区二区三区电影| 久久99精品久久久久久动态图| 男人的天堂av网| 91福利在线看| 9色在线视频网站| 国产精品人成电影在线观看| 国产91精品对白在线播放| 欧美激情国产精品日韩| 26uuu国产电影一区二区| 成年人视频在线免费看| 日韩乱码在线视频| 欧美片第1页| 日本公妇乱淫免费视频一区三区| 性欧美长视频| 国产免费一区二区三区网站免费| 欧美性受xxxx黑人xyx| av午夜在线| 91久久久久久久久久久久久| 婷婷综合伊人| 国产精品99久久久精品无码| 亚洲一区在线观看网站| 同心难改在线观看| 日韩美女av在线免费观看| 国产一区二区观看| 福利在线一区二区三区| 中文字幕一区二区三区不卡在线| 国产又黄又大又爽| 欧美日韩第一页| 欧美人成在线观看ccc36| 日本888xxxx| 亚洲女性喷水在线观看一区| 国产 日韩 欧美 精品| 18性欧美xxxⅹ性满足| 成人在线免费小视频| 红桃视频 国产| 亚洲国产综合91精品麻豆| 精品乱码一区二区三四区视频| 成人黄色av网站| 在线观看日韩av电影| xxxx日本黄色| 欧美一级二级在线观看| 妞干网免费在线视频| 亚洲最大色综合成人av| 懂色av噜噜一区二区三区av| 亚洲GV成人无码久久精品| 中文字幕久热精品视频在线| 精品午夜视频| www.国产区| 亚洲精品日韩综合观看成人91| 三区在线观看| 91久久精品国产91久久性色| 亚洲精品极品| 男人晚上看的视频| 亚洲精品成人久久| 婷婷激情一区| 免费看欧美黑人毛片| 国产欧美日韩中文久久| 粉嫩小泬无遮挡久久久久久| 国产精品xxx视频| 亚洲二区精品| 国内毛片毛片毛片毛片毛片| 日韩成人激情视频| 日韩不卡在线视频| 三级在线免费看|