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

十個常見的前端手寫功能,你全都會嗎?

開發(fā) 前端
萬丈高樓平地起,地基打的牢,才能永遠立于不敗之地。今天給大家?guī)淼氖?0個常見的 JavaScript 手寫功能,重要的地方已添加注釋。有的是借鑒別人的,有的是自己寫的,如有不正確的地方,歡迎多多指正。

萬丈高樓平地起,地基打的牢,才能永遠立于不敗之地。今天給大家?guī)淼氖?0個常見的 JavaScript 手寫功能,重要的地方已添加注釋。有的是借鑒別人的,有的是自己寫的,如有不正確的地方,歡迎多多指正。

[[440884]]

1、防抖

 

  1. function debounce(fn, delay) { 
  2.   let timer 
  3.   return function (...args) { 
  4.     if (timer) { 
  5.       clearTimeout(timer) 
  6.     } 
  7.     timer = setTimeout(() => { 
  8.       fn.apply(this, args) 
  9.     }, delay) 
  10.   } 
  11.  
  12. // 測試 
  13. function task() { 
  14.   console.log('run task'
  15. const debounceTask = debounce(task, 1000) 
  16. window.addEventListener('scroll', debounceTask) 

 

2、節(jié)流

 

  1. function throttle(fn, delay) { 
  2.   let last = 0 // 上次觸發(fā)時間 
  3.   return (...args) => { 
  4.     const now = Date.now() 
  5.     if (now - last > delay) { 
  6.       last = now 
  7.       fn.apply(this, args) 
  8.     } 
  9.   } 
  10.  
  11. // 測試 
  12. function task() { 
  13.   console.log('run task'
  14. const throttleTask = throttle(task, 1000) 
  15. window.addEventListener('scroll', throttleTask) 

 

3、深拷貝

 

  1. function deepClone(obj, cache = new WeakMap()) { 
  2.   if (typeof obj !== 'object'return obj // 普通類型,直接返回 
  3.   if (obj === nullreturn obj 
  4.   if (cache.get(obj)) return cache.get(obj) // 防止循環(huán)引用,程序進入死循環(huán) 
  5.   if (obj instanceof Datereturn new Date(obj) 
  6.   if (obj instanceof RegExp) return new RegExp(obj) 
  7.    
  8.   // 找到所屬原型上的constructor,所屬原型上的constructor指向當前對象的構造函數 
  9.   let cloneObj = new obj.constructor() 
  10.   cache.set(obj, cloneObj) // 緩存拷貝的對象,用于處理循環(huán)引用的情況 
  11.   for (let key in obj) { 
  12.     if (obj.hasOwnProperty(key)) { 
  13.       cloneObj[key] = deepClone(obj[key], cache) // 遞歸拷貝 
  14.     } 
  15.   } 
  16.   return cloneObj 
  17.  
  18. // 測試 
  19. const obj = { name'Jack', address: { x: 100, y: 200 } } 
  20. obj.a = obj // 循環(huán)引用 
  21. const newObj = deepClone(obj) 
  22. console.log(newObj.address === obj.address) // false 

 

4、實現 Promise

 

  1. class MyPromise { 
  2.   constructor(executor) { // executor執(zhí)行器 
  3.     this.status = 'pending' // 等待狀態(tài) 
  4.     this.value = null // 成功或失敗的參數 
  5.     this.fulfilledCallbacks = [] // 成功的函數隊列 
  6.     this.rejectedCallbacks = [] // 失敗的函數隊列 
  7.     const that = this 
  8.     function resolve(value) { // 成功的方法 
  9.       if (that.status === 'pending') { 
  10.         that.status = 'resolved' 
  11.         that.value = value 
  12.         that.fulfilledCallbacks.forEach(myFn => myFn(that.value)) //執(zhí)行回調方法 
  13.       } 
  14.     } 
  15.     function reject(value) { //失敗的方法 
  16.       if (that.status === 'pending') { 
  17.         that.status = 'rejected' 
  18.         that.value = value 
  19.         that.rejectedCallbacks.forEach(myFn => myFn(that.value)) //執(zhí)行回調方法 
  20.       } 
  21.     } 
  22.     try { 
  23.       executor(resolve, reject) 
  24.     } catch (err) { 
  25.       reject(err) 
  26.     } 
  27.   } 
  28.   then(onFulfilled, onRejected) { 
  29.     if (this.status === 'pending') { 
  30.       // 等待狀態(tài),添加回調函數到成功的函數隊列 
  31.       this.fulfilledCallbacks.push(() => { 
  32.         onFulfilled(this.value) 
  33.       }) 
  34.       // 等待狀態(tài),添加回調函數到失敗的函數隊列 
  35.       this.rejectedCallbacks.push(() => { 
  36.         onRejected(this.value) 
  37.       }) 
  38.     } 
  39.     if (this.status === 'resolved') { // 支持同步調用 
  40.       console.log('this', this) 
  41.       onFulfilled(this.value) 
  42.     } 
  43.     if (this.status === 'rejected') { // 支持同步調用 
  44.       onRejected(this.value) 
  45.     } 
  46.   } 
  47.  
  48. // 測試 
  49. function fn() { 
  50.   return new MyPromise((resolve, reject) => { 
  51.     setTimeout(() => { 
  52.       if(Math.random() > 0.6) { 
  53.         resolve(1) 
  54.       } else { 
  55.         reject(2) 
  56.       } 
  57.     }, 1000) 
  58.   }) 
  59. fn().then
  60.   res => { 
  61.     console.log('res', res) // res 1 
  62.   }, 
  63.   err => { 
  64.     console.log('err', err) // err 2 
  65.   }) 

 

5、異步控制并發(fā)數

 

  1. function limitRequest(urls = [], limit = 3) { 
  2.   return new Promise((resolve, reject) => { 
  3.     const len = urls.length 
  4.     let count = 0 // 當前進行到第幾個任務 
  5.  
  6.     const start = async () => { 
  7.       const url = urls.shift() // 從數組中拿取第一個任務 
  8.       if (url) { 
  9.         try { 
  10.           await axios.post(url) 
  11.           if (count == len - 1) { 
  12.             // 最后一個任務成功 
  13.             resolve() 
  14.           } else { 
  15.             count++ 
  16.             // 成功,啟動下一個任務 
  17.             start() 
  18.           } 
  19.         } catch (e) { 
  20.           if (count == len - 1) { 
  21.             // 最后一個任務失敗 
  22.             resolve() 
  23.           } else { 
  24.             count++ 
  25.             // 失敗,啟動下一個任務 
  26.             start() 
  27.           } 
  28.         } 
  29.       } 
  30.     } 
  31.  
  32.     // 啟動limit個任務 
  33.     while (limit > 0) { 
  34.       start() 
  35.       limit -= 1 
  36.     } 
  37.   }) 
  38.  
  39. // 測試 
  40. limitRequest(['http://xxa''http://xxb''http://xxc''http://xxd''http://xxe']) 

 

6、ES5繼承(寄生組合繼承)

 

  1. function Parent(name) { 
  2.   this.name = name 
  3. Parent.prototype.eat = function () { 
  4.   console.log(this.name + ' is eating'
  5.  
  6. function Child(name, age) { 
  7.   Parent.call(this, name
  8.   this.age = age 
  9. Child.prototype = Object.create(Parent.prototype) 
  10. Child.prototype.contructor = Child 
  11. Child.prototype.study = function () { 
  12.   console.log(this.name + ' is studying'
  13.  
  14. // 測試 
  15. let child = new Child('xiaoming', 16) 
  16. console.log(child.name) // xiaoming 
  17. child.eat() // xiaoming is eating 
  18. child.study() // xiaoming is studying 

 

7、數組排序

sort 排序

 

  1. // 對數字進行排序,簡寫 
  2. const arr = [3, 2, 4, 1, 5] 
  3. arr.sort((a, b) => a - b) 
  4. console.log(arr) // [1, 2, 3, 4, 5] 
  5.  
  6. // 對字母進行排序,簡寫 
  7. const arr = ['b''c''a''e''d'
  8. arr.sort() 
  9. console.log(arr) // ['a''b''c''d''e' 

 

冒泡排序

 

  1. function bubbleSort(arr) { 
  2.   let len = arr.length 
  3.   for (let i = 0; i < len - 1; i++) { 
  4.     // 從第一個元素開始,比較相鄰的兩個元素,前者大就交換位置 
  5.     for (let j = 0; j < len - 1 - i; j++) { 
  6.       if (arr[j] > arr[j + 1]) { 
  7.         let num = arr[j] 
  8.         arr[j] = arr[j + 1] 
  9.         arr[j + 1] = num 
  10.       } 
  11.     } 
  12.     // 每次遍歷結束,都能找到一個最大值,放在數組最后 
  13.   } 
  14.   return arr 
  15.  
  16. //測試 
  17. console.log(bubbleSort([2, 3, 1, 5, 4])) // [1, 2, 3, 4, 5] 

 

8、數組去重

Set 去重

 

  1. cosnt newArr = [...new Set(arr)]  

 

Array.from 去重

 

  1. const newArr = Array.from(new Set(arr)) 

indexOf 去重

 

  1. function resetArr(arr) { 
  2.   let res = [] 
  3.   arr.forEach(item => { 
  4.     if (res.indexOf(item) === -1) { 
  5.       res.push(item) 
  6.     } 
  7.   }) 
  8.   return res 
  9.  
  10. // 測試 
  11. const arr = [1, 1, 2, 3, 3] 
  12. console.log(resetArr(arr)) // [1, 2, 3] 

 

9、獲取 url 參數

URLSearchParams 方法

 

  1. // 創(chuàng)建一個URLSearchParams實例 
  2. const urlSearchParams = new URLSearchParams(window.location.search); 
  3. // 把鍵值對列表轉換為一個對象 
  4. const params = Object.fromEntries(urlSearchParams.entries()); 

 

split 方法

 

  1. function getParams(url) { 
  2.   const res = {} 
  3.   if (url.includes('?')) { 
  4.     const str = url.split('?')[1] 
  5.     const arr = str.split('&'
  6.     arr.forEach(item => { 
  7.       const key = item.split('=')[0] 
  8.       const val = item.split('=')[1] 
  9.       res[key] = decodeURIComponent(val) // 解碼 
  10.     }) 
  11.   } 
  12.   return res 
  13.  
  14. // 測試 
  15. const user = getParams('http://www.baidu.com?user=%E9%98%BF%E9%A3%9E&age=16'
  16. console.log(user) // { user'阿飛', age: '16' } 

 

10、事件總線 | 發(fā)布訂閱模式

 

  1. class EventEmitter { 
  2.   constructor() { 
  3.     this.cache = {} 
  4.   } 
  5.  
  6.   on(name, fn) { 
  7.     if (this.cache[name]) { 
  8.       this.cache[name].push(fn) 
  9.     } else { 
  10.       this.cache[name] = [fn] 
  11.     } 
  12.   } 
  13.  
  14.   off(name, fn) { 
  15.     const tasks = this.cache[name
  16.     if (tasks) { 
  17.       const index = tasks.findIndex((f) => f === fn || f.callback === fn) 
  18.       if (index >= 0) { 
  19.         tasks.splice(index, 1) 
  20.       } 
  21.     } 
  22.   } 
  23.  
  24.   emit(name, once = false) { 
  25.     if (this.cache[name]) { 
  26.       // 創(chuàng)建副本,如果回調函數內繼續(xù)注冊相同事件,會造成死循環(huán) 
  27.       const tasks = this.cache[name].slice() 
  28.       for (let fn of tasks) { 
  29.         fn(); 
  30.       } 
  31.       if (once) { 
  32.         delete this.cache[name
  33.       } 
  34.     } 
  35.   } 
  36.  
  37. // 測試 
  38. const eventBus = new EventEmitter() 
  39. const task1 = () => { console.log('task1'); } 
  40. const task2 = () => { console.log('task2'); } 
  41.  
  42. eventBus.on('task', task1) 
  43. eventBus.on('task', task2) 
  44. eventBus.off('task', task1) 
  45. setTimeout(() => { 
  46.   eventBus.emit('task') // task2 
  47. }, 1000) 

 

 

以上就是工作或求職中最常見的手寫功能,你是不是全都掌握了呢

 

責任編輯:華軒 來源: 今日頭條
相關推薦

2023-12-15 10:42:05

2023-07-14 11:36:09

GPT-4社交

2022-11-25 14:55:43

JavaScriptweb應用程序

2025-01-17 11:38:10

2023-05-28 22:48:29

程序員編程

2022-06-06 16:40:20

工作流程效率管理

2022-07-31 23:54:24

Linux操作系統

2022-07-31 23:53:37

Linux操作系統設備

2023-12-22 16:48:00

Kubernetes容器集群

2022-01-05 11:40:36

Go特性語言

2019-04-01 06:37:12

R語言數據分析數據

2010-03-04 16:09:09

2020-03-25 10:27:59

Python語言

2023-12-27 14:12:40

JavaScrip技巧

2024-09-24 07:57:55

SQL錯誤??EXPLAIN?

2023-07-14 14:25:00

Python語言錯誤

2025-03-18 14:27:35

2025-08-28 10:05:00

Go開發(fā)

2022-05-16 07:48:54

Python操作類型
點贊
收藏

51CTO技術棧公眾號

五月天免费网站| 日本特黄a级片| 亚洲 美腿 欧美 偷拍| 狂野欧美一区| 日韩三级成人av网| 黄页网站在线看| 黑人巨大精品欧美一区二区桃花岛| 久久久久国产成人精品亚洲午夜| 成人黄色网免费| 久久免费视频6| 国产a久久精品一区二区三区| 欧美日韩综合在线免费观看| 毛片在线视频观看| 牛牛热在线视频| 国产一区在线视频| 热草久综合在线| 二区三区四区视频| 日本在线中文字幕一区| 一区二区三区高清| 精品乱色一区二区中文字幕| 国产一区二区麻豆| 国产精品久久久久久模特 | 欧美激情精品久久久久久免费印度| 欧美激情 亚洲| 欧美日韩va| 欧美日韩中文字幕综合视频| 亚洲第一综合网站| 国产在线观看免费| 99久久国产综合精品色伊| 成人黄色片在线| 五月婷婷激情视频| 在线国产精品一区| 久久中文字幕视频| 69精品无码成人久久久久久| 国产精品极品| 欧美一区二区高清| jizz18女人| 依依综合在线| 午夜电影网一区| 美女av免费观看| 久热国产在线| 国产精品视频免费看| 久中文字幕一区| 亚洲精品一区二区三区不卡| 久久99久久久欧美国产| 国产成人精品午夜| 天天操夜夜操视频| 亚洲激情一区| 欧美精品激情在线观看| 老熟妇高潮一区二区三区| 国产成人影院| 国产视频一区在线| 黄色正能量网站| 久久综合五月婷婷| 亚洲白拍色综合图区| 亚洲av无码久久精品色欲| 国产日韩一区二区三免费高清| 欧美视频在线观看一区二区| 日韩视频免费在线播放| gay欧美网站| 色综合天天综合网天天狠天天| 欧美日韩一道本| 麻豆免费在线| 欧美日韩激情小视频| 欧美高清中文字幕| 福利写真视频网站在线| 亚洲福利视频一区| 免费看国产一级片| 久久久男人天堂| 欧美日韩人人澡狠狠躁视频| 欧美女人性生活视频| videos性欧美另类高清| 欧美艳星brazzers| 亚洲一区二区在线视频观看| 在线视频成人| 日韩三级在线免费观看| 91日韩在线播放| 中文字幕人妻一区二区三区视频| 欧美aaa在线| 成人两性免费视频| 亚洲AV无码成人片在线观看 | 成人毛片在线免费观看| 成人黄色国产精品网站大全在线免费观看 | 亚洲大片在线观看| 成熟丰满熟妇高潮xxxxx视频| 中文字幕在线高清| 欧美性猛交xxxxxx富婆| 97超碰成人在线| 日韩精品免费视频一区二区三区| 日韩欧美第一区| 香港三级日本三级| 狠狠做深爱婷婷综合一区| 日韩在线观看你懂的| 欧美极品aaaaabbbbb| 亚洲日本激情| 国产精品高潮粉嫩av| 亚洲天堂网视频| 国产盗摄女厕一区二区三区 | 干日本少妇首页| 久久久久久久一区二区三区| 欧美性猛交bbbbb精品| 日本成人在线一区| 99国产超薄肉色丝袜交足的后果 | 国产酒店精品激情| 精品久久久久久一区| 国产成人天天5g影院在线观看| 国产精品家庭影院| 18禁免费观看网站| 日本一区二区三区中文字幕 | 五月婷婷免费视频| 中文字幕亚洲在| 国产美女主播在线播放| 精品网站在线| 亚洲丁香婷深爱综合| 精品伦精品一区二区三区视频密桃 | 久久婷婷麻豆| 51国偷自产一区二区三区的来源| 日韩在线无毛| 一区二区三区不卡在线观看| 黄网站免费久久| 日韩免费av片在线观看| 国产三级漂亮女教师| 91亚洲精品久久久蜜桃| 97超碰免费观看| 亚洲综合电影| 精品精品欲导航| 黑人狂躁日本娇小| 日韩精品午夜视频| 久久伦理网站| 亚洲国产精品精华素| 在线视频你懂得一区| 亚洲精品久久一区二区三区777| 麻豆一区二区麻豆免费观看| 久久精品国产清自在天天线| 日韩在线 中文字幕| 不卡电影一区二区三区| 中文字幕在线中文字幕日亚韩一区| 免费h视频在线观看| 日韩欧美一二区| www.97视频| 美国欧美日韩国产在线播放| 噜噜噜噜噜久久久久久91| 欧美理论片在线播放| 91精品国产一区二区三区 | 国产电影一区二区| 日韩性生活视频| 中文字幕一区2区3区| 久久久国产精华| av黄色在线网站| 狠狠久久伊人| 91精品国产91久久久| 少妇高潮久久久| 亚洲国产美国国产综合一区二区| 污视频在线观看免费网站| 97久久视频| 成人网址在线观看| 国产成人l区| 91精品国产一区二区三区| 一区二区三区影视| 国产精品综合久久| 大荫蒂性生交片| jizz18欧美18| 亚州精品天堂中文字幕| 手机av免费在线观看| 午夜不卡av在线| 中文在线永久免费观看| 国产日韩欧美高清免费| 精品一区二区三区日本| 波多视频一区| 国产亚洲精品一区二区| 中文字幕人妻一区二区在线视频| 中文字幕欧美日本乱码一线二线| 在线观看高清免费视频| 国产精品久久久久9999赢消| 成人在线免费观看视视频| 黄色网在线免费观看| 精品嫩草影院久久| 三级黄色在线视频| 国产亚洲短视频| 色一情一区二区三区| 综合久久精品| 久久久久久国产精品一区| av高清一区| 久久成人综合视频| 色窝窝无码一区二区三区| 色婷婷亚洲婷婷| 国产乱子轮xxx农村| 国产69精品久久久久777| 黄色片视频在线免费观看| 成人免费看片39| 99r国产精品视频| 樱花草涩涩www在线播放| 一区二区三区黄色| 国产丰满果冻videossex| 五月激情丁香一区二区三区| 中文字幕在线观看免费高清| 久久99精品久久久久久国产越南 | 国产精品美女午夜av| gogo在线高清视频| 精品丝袜一区二区三区| 这里只有精品免费视频| 一区二区免费视频| 免费一级做a爰片久久毛片潮| 精品夜夜嗨av一区二区三区| 拔插拔插海外华人免费| 成人羞羞网站入口免费| 成人黄视频免费| 91在线成人| 久久久久久久久久久免费| 美丽的姑娘在线观看免费动漫| 欧美另类videos死尸| 日本一区二区不卡在线| 国产精品对白交换视频| 偷拍女澡堂一区二区三区| 精品一区二区久久久| 国产精品-区区久久久狼| 欧美+亚洲+精品+三区| 秋霞在线观看一区二区三区| 凹凸av导航大全精品| 国产日韩欧美视频| 亚洲精品mv| 欧美极品美女电影一区| 免费日本一区二区三区视频| 亚洲欧美中文日韩在线v日本| 国产jzjzjz丝袜老师水多| 在线观看视频一区| 国产精品777777| 亚洲高清免费视频| 婷婷色中文字幕| 国产精品久久久久桃色tv| 9.1成人看片| 东方aⅴ免费观看久久av| 在线免费看污网站| 久久精品久久99精品久久| 久久国产乱子伦免费精品| 亚洲精品色图| 国产欧美久久久久| 欧美一区激情| 男女爱爱视频网站| 91高清一区| 国产福利片一区二区| 日韩伦理视频| 日韩在线国产| 欧美美女视频| 欧美国产一二三区| 亚洲小说图片| 免费观看成人高| 亚洲激情播播| 久热国产精品视频一区二区三区| 卡一精品卡二卡三网站乱码 | 波多野结衣50连登视频| 欧美色一级片| 成人免费网站入口| 在线高清一区| 你真棒插曲来救救我在线观看| 一区久久精品| 人妻久久久一区二区三区| 亚洲人人精品| 日日橹狠狠爱欧美超碰| 香蕉亚洲视频| 亚洲中文字幕久久精品无码喷水| 久久久噜噜噜| 亚洲欧美自拍另类日韩| 精品一区二区三区在线播放| 中文字幕视频三区| 国产电影一区在线| 香蕉视频污视频| 久久综合久久久久88| 扒开jk护士狂揉免费| 久久久精品免费网站| 能直接看的av| 亚洲欧美影音先锋| 久久这里只有精品国产| 亚洲国产中文字幕在线视频综合| 日本少妇激情视频| 日本道精品一区二区三区| 一区二区三区在线免费观看视频 | 久久久久久香蕉网| 在线播放高清视频www| 国产欧美 在线欧美| 天堂精品在线视频| 美女主播视频一区| 久久一区91| www插插插无码视频网站| 久久精品官网| 欧美一级视频在线| 成人精品鲁一区一区二区| 日本黄色特级片| 成人免费在线观看入口| 精品一区二区三区人妻| 色综合久久久网| 国产精品久久无码一三区| 精品国产91洋老外米糕| 精品电影在线| 大胆欧美人体视频| 成人勉费视频| 7777精品伊久久久大香线蕉语言 | 精品国产乱码久久久久久1区2区 | 精品一区二区三区免费视频| 黑森林av导航| 亚洲国产精品黑人久久久| avove在线播放| 91久久免费观看| 亚洲奶汁xxxx哺乳期| 中文字幕av一区中文字幕天堂| 黄污视频在线观看| 成人国产精品av| 欧美一区二区三区红桃小说| 亚洲第一在线综合在线| 日韩一级免费| 久久精品亚洲天堂| 国产性做久久久久久| 久久精品免费av| 欧美日韩国产天堂| 涩涩视频在线观看免费| 欧美黑人极品猛少妇色xxxxx | 91精品久久久久久久久久另类| 精品久久ai| 日本一级淫片演员| 蜜臀av一区二区| 菠萝菠萝蜜网站| 一区二区三区在线播| 夜夜狠狠擅视频| 亚洲性日韩精品一区二区| 国产乱码精品一区二三赶尸艳谈| 91在线视频精品| 色爱综合网欧美| 国产xxxxx视频| 91丨porny丨国产| 日韩乱码人妻无码中文字幕| 日韩欧美精品在线视频| √天堂资源地址在线官网| 日韩av三级在线观看| 欧美大胆视频| 国产日韩av网站| 国产成人自拍在线| 成人涩涩小片视频日本| 欧美日韩国产成人在线免费| 国产黄色免费在线观看| 欧美性受xxxx白人性爽| 农村少妇一区二区三区四区五区 | 国产美女精品视频| 国产一区二区亚洲| 成人黄色一区二区| 久久久久久久久久美女| 欧美日韩综合在线观看| 日韩av最新在线| 免费h视频在线观看| 黄色小网站91| 日韩视频在线一区二区三区| 国产视频精品视频| 亚洲图片欧美色图| 丰满人妻一区二区三区免费| 久久久久久com| 国产乱论精品| 麻豆tv在线播放| 91美女精品福利| 无码人妻丰满熟妇精品区| 亚洲精选中文字幕| 粉嫩一区二区三区| 日韩欧美激情一区二区| 男人操女人的视频在线观看欧美| www.av天天| 欧美色大人视频| 久久bbxx| 99精品在线直播| 在线播放不卡| 玖玖爱在线观看| 91福利视频久久久久| 91精品大全| 91在线播放国产| 在线视频观看日韩| 一级黄色片大全| 欧美日韩成人激情| 天天干在线视频论坛| 精品一区二区三区自拍图片区| 性一交一乱一区二区洋洋av| 国产又大又粗又爽的毛片| 欧美日韩成人一区二区| 欧洲中文在线| 欧美12av| 久久99久久99| 国产一级一片免费播放| 亚洲欧美激情视频| 先锋影音一区二区| 精品少妇人欧美激情在线观看| 99re热这里只有精品免费视频| 一级黄色av片| 久久五月天综合| 欧美国产极品| 亚洲精品自拍网| 亚洲一区视频在线| 国产黄色免费在线观看| 97久久人人超碰caoprom欧美| 国产日韩欧美在线播放不卡| 懂色av粉嫩av浪潮av| 日韩精品一区二区三区四区视频| 日韩欧美精品一区二区三区| 久久久一二三四| 久久青草国产手机看片福利盒子|