欧美精品在线一区二区三区_亚洲女同精品视频_日韩一区免费_国产欧美久久久精品免费_国产这里只有精品_僵尸再翻生在线观看_久久99精品国产一区二区三区_亚洲免费一区二区_女教师淫辱の教室蜜臀av软件_中文字幕国产一区二区

死磕javascript的手寫面試題

2021-4-15    前端達(dá)人

1.實(shí)現(xiàn)lodash的_.get方法

function _getValue(target, valuePath, defalutVal) {
  let valueType = Object.prototype.toString.call(target)
  console.log(valueType)
  // if (valueType == "[object Array]") {
    let paths = valuePath.replace(/\[(\d+)\]/, `.$1`).split('.')
    let result = target
    for(const path of paths){
      result = Object(result)[path]
      if(result == undefined){
        return defalutVal
      }
    }
    return result
} 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
測(cè)試:
let obj = {
  a:{
    b:[
      {
        c:2
      }
    ]
  }
}

console.log(_getValue(obj, 'a.b[0].c')) //2 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

2.寫一個(gè)函數(shù)判斷兩個(gè)變量是否相等

function isEqual(res1, res2) {
  let a = getTypeOf(res1)
  let b = getTypeOf(res2)
  if(a !== b){
    return false
  }else if(a === 'base'){
    console.log('base',res1,res2)
    return res1 === res2
  } else if(a === 'array'){
    if(res1.length !== res2.length){
      console.log('array',res1,res2)
      return false
    }else{
      //遍歷數(shù)組的值比較
      for(let i =0;i<res1.length;i++){
        if(!isEqual(res1[i],res2[i])){
          console.log('array',res1[i],res2[i])
          return false
        }
      }
      return true
    }
    return true
  }else if(a === 'object'){
    let ak = Object.keys(a)
    let bk = Object.keys(b)
    if(ak.length !== bk.length){
      return false
    }else{
      for(let o in res1){
        console.log(res1[o])
        if(!isEqual(res1[o],res2[o])){
          console.log('object',res1[o],res2[o])
          return false
        }
      }
      return true
    } 
  }else if(a === 'null' || a === 'undefined'){
    console.log('null')
    return true
  }else if(a === 'function'){
    console.log('function')
    return a === b
  }
}

function getTypeOf(res) {
  let type = Object.prototype.toString.call(res)
  switch (type) {
    case "[object Array]":
      return 'array'
    case "[object Object]":
      return 'object'
    case "[object Null]":
      return 'null'
    case "[object Undefined]":
      return 'undefined'
    case "[object Number]"||"[object String]"||"[object Boolean]":
      return 'base'
    case "[object Function]":
      return 'function'
    default:
      return 'typeError'
  }
} 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
測(cè)試:
let a = {
  a:20,
  b:{
    c:30,
    d:[1,2,3]
  }
}
let b = {
  a:20,
  b:{
    c:30,
    d:[1,2,3]
  }
}
console.log(isEqual(a,b)) //true 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

3.數(shù)組扁平化的方法

function _flat(arr){
  let result = []
  for(let i = 0;i<arr.length;i++){
    if(Array.isArray(arr[i])){
      result = result.concat(_flat(arr[i]))
    }else{
      result.push(arr[i])
    }
  }
  return result;
} 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
let arr = [1,2,[3,4,[5,6]]]
_flat(arr) //[1,2,3,4,5,6] 
  • 1
  • 2
//es6
function _flat2(arr){
  while(arr.some(item=>Array.isArray(item))){
    arr = [].concat(...arr)
  }
  return arr
} 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
let arr = [1,2,[3,4,[5,6]]]
_flat2(arr) //[1,2,3,4,5,6] 
  • 1
  • 2

4.深克隆

簡(jiǎn)單深克隆,不考慮內(nèi)置對(duì)象和函數(shù)

function deepClone(obj){
  if(typeof obj !== 'object') return
  let newObj = obj instanceof Array?[]:{}
  for(let key in obj){
      if(obj.hasOwnProperty(key)){
          newObj[key] = typeof obj[key] === 'object'?deepClone(obj[key]):obj[key]
      }
  }
  return newObj
} 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

復(fù)雜版深度克隆 考慮內(nèi)置對(duì)象 比如date regexp 函數(shù) 以及對(duì)象的循環(huán)引用的問題

const isObject = (target) => typeof target === "object"&& target !== null;

function deepClone2(target, map = new WeakMap()) {
  console.log(target)
    if (map.get(target)) {
        return target;
    }
    // 獲取當(dāng)前值的構(gòu)造函數(shù):獲取它的類型
    let constructor = target.constructor;
    // 檢測(cè)當(dāng)前對(duì)象target是否與正則、日期格式對(duì)象匹配
    if (/^(RegExp|Date)$/i.test(constructor.name)) {
        // 創(chuàng)建一個(gè)新的特殊對(duì)象(正則類/日期類)的實(shí)例
        return new constructor(target);  
    }
    if (isObject(target)) {
        map.set(target, true);  // 為循環(huán)引用的對(duì)象做標(biāo)記
        const cloneTarget = Array.isArray(target) ? [] : {};
        for (let prop in target) {
            if (target.hasOwnProperty(prop)) {
                cloneTarget[prop] = deepClone(target[prop], map);
            }
        }
        return cloneTarget;
    } else {
        return target;
    }
} 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27

5.數(shù)組去重

filter去重

function _unique(arr){
  return arr.filter((item,index,array)=>{
    return array.indexOf(item) === index
  })
} 
  • 1
  • 2
  • 3
  • 4
  • 5

es6 Set

function _unique2(arr){
  return [...new Set(arr)]
} 
  • 1
  • 2
  • 3

includes

function _unique3(arr){
  let newArr = []
  arr.forEach(item => {
      if(!newArr.includes(item)){
        newArr.push(item)
      }
  });
  return newArr
} 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

雙層for循環(huán)

function _unique4(arr){
  for(let i =0;i<arr.length;i++){
    for(let j =i+1;j<arr.length;j++){
      if(arr[i] === arr[j]){
        arr.splice(j,1)
        j--
      }
    }
  }
  return arr
} 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

indexof

function _unique5(arr){
  let newArr = []
  for(let i = 0;i<arr.length;i++){
    if(newArr.indexOf(arr[i] === -1){
      newArr.push(arr[i])
    })
  }
  return newArr
} 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

6.判斷數(shù)據(jù)的類型

function _typeOf(obj){
  let res = Object.prototype.toString.call(obj).split(' ')[1]
  let mold = res.substring(0,res.length-1).toLowerCase()
  return mold
} 
  • 1
  • 2
  • 3
  • 4
  • 5
_typeOf(5) //number
_typeOf('5') //string 
  • 1
  • 2

7.解析url參數(shù)為對(duì)象

function getParamsObj(params){
  let paramsStr = params.replace(/^.+\?(.+)/,"$1")
  let paramsArr = paramsStr.split('&')
  let paramsObj = {}

  for(let [key,value] of paramsArr.entries()){
      if(/=/.test(value)){
          let valArr = value.split('=')
          val = decodeURIComponent(valArr[1]) //解碼
          val = /^\d+$/.test(val)?parseFloat(val):val //判斷是不是數(shù)字
          if(paramsObj.hasOwnProperty(valArr[0])){
              paramsObj[valArr[0]] = [].concat(paramsObj[valArr[0]],val)
          }else{
              paramsObj[valArr[0]] = val
          }
      }  

  }
  return paramsObj
} 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

8.函數(shù)柯里化

//從一次傳入多個(gè)參數(shù)  編程多次調(diào)用每次傳入一個(gè)參數(shù)
function add(a, b, c, d, e) {
  return a + b + c + d + e
}

function curry(fn) {
   let dFn = (...args)=>{
     if(args.length == fn.length) return fn(...args)
     return (...arg)=>{
       return dFn(...args,...arg)
     }
   }
   return dFn
}
let addCurry = curry(add)
addCurry(1,2,3)(2)(3) 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

9.圖片懶加載

//添加了兩個(gè)功能
// 圖片加載完成后 移除事件監(jiān)聽
// 加載完的圖片從imgList中移除
let imgList = [...document.querySelectorAll('img')]
let length = imgList.length

const imgLazyLoad = function () {
  let count = 0
  let deleteIndexList = []
  imgList.forEach((img, index) => {
    let rect = img.getBoundingClientRect() 
    //獲取元素到視圖的距離 top元素上邊到視圖上邊的距離 left元素左邊到視圖左邊的距離  right... bottom...
    if (rect.top < window.innerHeight) {
      // img.src = img.dataset.src
      img.src = img.getAttribute('data-src')
      deleteIndexList.push(index)
      count++
      if (count === length) {
        document.removeEventListener('scroll', imgLazyLoad)
      }
    }
  })
  imgList = imgList.filter((img, index) => !deleteIndexList.includes(index))
}
imgLazyLoad()

document.addEventListener('scroll', imgLazyLoad) 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27

圖片懶加載:https://juejin.cn/post/6844903856489365518#heading-19

10節(jié)流防抖

函數(shù)防抖 觸發(fā)高頻事件 事件在n后執(zhí)行,如果n秒鐘重復(fù)執(zhí)行了 則時(shí)間重置

//簡(jiǎn)易版
function debounce(func,wait){
  let timer; 
  return function(){
    let context = this;
    let args = arguments;
    console.log(timer)
    clearTimeout(timer)
    timer = setTimeout(function(){
      func.apply(context,args)
    },wait)
  }

}
let btn = document.querySelector('button');
function aa(){
  console.log(111)
}
btn.onclick = debounce(aa,2000) 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
// 復(fù)雜版
// 1.取消防抖  
// 2.立即執(zhí)行功能(點(diǎn)擊之后立即執(zhí)行函數(shù)  但是 wait時(shí)間之后在點(diǎn)擊才能在立即執(zhí)行)  
// 3.函數(shù)可能有返回值
function debounce(func,wait,immediate){
  let timer,result;

  const debounce = function () {
    const context = this
    const args = arguments

    if(timer) clearTimeout(timer)
    if(immediate){
      console.log(timer)
      var callNow = !timer
      timer = setTimeout(function () {
          timer =null
      },wait)
      if(callNow) result = func.apply(context,args)
    }else{
      timer = setTimeout(function (params) {
        result = func.apply(context,args)
      },wait)
    }
    return result
  }

  debounce.cance = function () {
    clearTimeout(timer)
    timer=null
  }

  return debounce

}

let btn = document.querySelector('button');
function aa(){
  console.log(111)
}
btn.onclick = debounce(aa,2000,true)``` 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41

函數(shù)節(jié)流 觸發(fā)高頻事件 且n秒只執(zhí)行一次

//使用時(shí)間戳
function  throttle(func,wait) {
  var context,args;
  var previous = 0

  return function () {
    context = this;
    args = arguments;
    let nowDate = +new Date()
    if(nowDate-previous>wait){
      func.apply(context,arguments)
      previous = nowDate
    }
  }
} 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
//定時(shí)器
function throttle(func,wait) {
  var context,args;
  var timer;
  return function(){
    context = this;
    args = arguments;
    if(!timer){
      timer = setTimeout(function () {
        timer = null;
        func.apply(context,args)
      },wait)
    }
  }

} 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
//組合版 options.leading 為true 立即執(zhí)行一次 options.trailing為true  結(jié)束之后執(zhí)行一次 默認(rèn)為true
function throttle(func, wait ,options = {}) {
  var context, args, timer,result;
  var previous = 0;

  var later = function () {
    previous = options.leading === false ? 0 : new Date().getTime();
    timer = null;
    func.apply(context, args)
    if (!timer) context = args = null;
  }

  var throttle = function () {
    var now = new Date().getTime()
    if (!previous && options.leading === false) previous = now;
    context = this;
    args = arguments;

    //下次觸發(fā) func 剩余的時(shí)間
    var remaining = wait - (now - previous);
    if (remaining <= 0 || remaining > wait) {
      // if (timer) {
      //   clearTimeout(timer);
      //   timer = null;
      // }
      previous = now;
      func.apply(context, args);
      if (!timer) context = args = null;
    } else if (!timer&& options.trailing !== false) {
      timer = setTimeout(later, remaining);
    }
  }

  throttled.cancel = function() {
    clearTimeout(timer);
    previous = 0;
    timer = null;
  }

  return throttle
}

function aa(e) {
  console.log(111)
  console.log(e)
}

let btn = document.querySelector('button');
btn.onclick = throttle(aa, 2000,{
  leading:false,
  trailing:true 

})

轉(zhuǎn)自:csdn論壇 作者:Selfimpr歐

日歷

鏈接

個(gè)人資料

存檔

久久无码av三级| 日韩影院精彩在线| 日韩少妇与小伙激情| 精品国产人妻一区二区三区| 欧美videos粗暴| 欧美写真视频网站| 日日摸天天爽天天爽视频| 色女人在线视频| 亚洲色图一区二区| 一区二区三区|亚洲午夜| 污污网站在线| 91丨porny丨户外露出| 狠狠久久综合婷婷不卡| 日本黄色一区二区三区| 国产乱子伦视频一区二区三区| 国产综合久久久久久| 在线观看视频中文字幕| 老色鬼久久亚洲一区二区| 日本中文字幕不卡免费| 五月婷婷六月婷婷| 巨乳诱惑日韩免费av| 国产成人精品视| 免费在线观看av的网站| 亚洲免费网站| 国产精品扒开腿做爽爽爽男男| 一级做a爰片久久毛片| 亚洲三级色网| 欧美一区第一页| 国产精品久久久久久久久久精爆| 在线视频精品| 日本最新高清不卡中文字幕| 天天射天天干天天| 久久国产高清| 国产精品丝袜久久久久久高清| 91成品人影院| 精品一区二区三区免费| 91在线观看免费| 亚洲国产成人精品一区二区三区| 国产一区二区福利| 国产日韩三区| 一级毛片在线视频| 中文字幕久久午夜不卡| 国产又粗又大又爽的视频| 黄色免费在线观看网站| 亚洲福利电影网| 草草草在线视频| 久久精品女人天堂av免费观看 | 北条麻妃69av| 欧美黑人粗大| 日韩一区二区三区免费看| 小毛片在线观看| 亚洲免费毛片| 日韩视频免费在线| 五月婷婷开心网| 六月天综合网| 91av一区二区三区| 亚洲人av在线| 国产精品久久久久久久久快鸭 | 国产视频一区在线播放| 裸体裸乳免费看| 蜜臀av在线播放| 在线欧美小视频| 无码人妻丰满熟妇啪啪网站| 免费萌白酱国产一区二区三区| 中文在线资源观看视频网站免费不卡| 激情五月婷婷在线| 翔田千里一区二区| 96成人在线视频| 日本福利片高清在线观看| 亚洲日本乱码在线观看| 黄色一级大片在线观看| 精品91福利视频| 亚洲一区二区久久久| 国产无码精品一区二区| 日韩精品高清不卡| 精品国产福利| 久久久久久国产精品免费无遮挡| 黑人精品xxx一区| 精品国自产在线观看| 国产一区三区在线播放| 欧美国产日韩二区| 在线免费看91| 成人av动漫在线| 日韩中文字幕亚洲精品欧美| 牛牛精品一区二区| 精品国产欧美一区二区| 日本福利片在线观看| 国产精品一级| 国产一区精品在线| 黄av在线播放| 欧美日韩视频在线观看一区二区三区 | 欧美成人性福生活免费看| 国产日韩精品中文字无码| 国产精品jizz在线观看美国| 91精品国产综合久久香蕉最新版 | 久久精品青草| 成人av在线亚洲| 欧美女v视频| 欧美日韩国产精品一区| 亚洲自拍偷拍精品| 久久久久久免费视频| 91精品久久久久久久久久另类| 在线观看免费av网| 亚洲成av人片一区二区梦乃| 最新日本中文字幕| 亚洲最大av| 亚洲最大激情中文字幕| 成人福利在线| 欧美日韩国产一级二级| 懂色av粉嫩av蜜臀av一区二区三区| 国产日韩一区二区三区在线播放| 精品麻豆av| 国产乱码在线| 亚洲成人性视频| 国产一卡二卡在线| 国产99久久久国产精品| 日韩美女爱爱视频| 日韩高清在线观看一区二区| 欧美高清在线播放| 香蕉视频免费看| 亚洲国产一区二区在线播放| 国产麻豆剧传媒精品国产av| 欧美久久久久| 精品伦理一区二区三区| 国产一二在线播放| 亚洲视频在线观看免费| 五月天中文字幕| 国产三级精品三级| 欧美午夜精品理论片| 四虎8848精品成人免费网站| 亚洲v日韩v综合v精品v| 国产黄a三级三级三级av在线看| 欧美一区二区三区精品| 久久午夜无码鲁丝片| 国产精品2024| 99色精品视频| 精品高清久久| 91系列在线观看| a视频在线免费看| 亚洲国产精品va在看黑人| 秋霞精品一区二区三区| 久久久久久久久97黄色工厂| 亚洲一级免费在线观看| 91麻豆国产自产在线观看亚洲| 91亚洲精品丁香在线观看| 在线观看av免费| 亚洲精品在线不卡| 国产乱淫av片免费| 亚洲成人777| www久久久久久久| 蜜臀91精品一区二区三区| 日韩一级特黄毛片| 久久影视三级福利片| 国产欧美精品在线播放| av香蕉成人| 亚洲无限av看| 丰满肉肉bbwwbbww| 欧美午夜久久久| 26uuu成人网| 床上的激情91.| 日日躁夜夜躁aaaabbbb| aa级大片免费在线观看| 免费观看日韩av| 欧美一级中文字幕| 成人三级毛片| 国产精品综合网站| 国内高清免费在线视频| 中文字幕在线观看日韩| 天堂中文字幕av| 欧美亚洲自拍偷拍| 国产在线精品观看| 中文字幕av一区二区三区| av漫画在线观看| 日本不卡一区二区三区| 日本国产在线播放| 91欧美在线| 欧美一区二区在线| 日韩一区二区三区精品| 国产精品久久久久久久久久尿| 好吊日视频在线观看| 国产亚洲精品美女久久久| 欧美 日韩 国产 成人 在线 91| 日本福利一区二区| 国产一级做a爱片久久毛片a| 国产精品久久久久四虎| 中文字幕第20页| 国产69精品一区二区亚洲孕妇| 国模私拍视频在线观看| 99精品国产福利在线观看免费| 大片在线观看网站免费收看| 国产成人av| 欧美亚洲精品日韩| 亚洲日本va| 91成人理论电影| 欧美大片1688网站| 国产精品久久不能| 国内激情视频在线观看| 久久久久久久久网站| 麻豆网站在线看| 日韩一区二区精品视频| 可以在线观看的av| 亚洲美女黄色片| 免费在线看污| 亚洲国产欧美在线成人app| 亚洲免费视频网| 欧美精品久久一区二区三区| 亚洲天堂999| 91福利在线免费观看| 成人小视频在线播放| 欧美日韩黄色大片| 国产精品一区二区三区四| 一区二区三区四区在线免费观看| 青青草原免费观看| 成人免费在线播放视频| 成人在线观看免费完整| 中文字幕乱码一区二区免费| 欧美亚洲色综久久精品国产| 久久精品在线观看| 波多野结衣一二三四区| 国产婷婷色一区二区三区| 欧洲美熟女乱又伦| 国产丝袜欧美中文另类| 美国黄色特级片| 国产欧美日产一区| 久久人妻无码aⅴ毛片a片app| 中文字幕的久久| 黑鬼狂亚洲人videos| 国产精品福利电影一区二区三区四区| 婷婷国产成人精品视频| 欧美激情中文不卡| www欧美com| 亚洲女与黑人做爰| 久久久久亚洲av片无码下载蜜桃| 一区二区三区产品免费精品久久75| 青青草免费av| 一区二区三区在线不卡| 国产成人在线视频观看| 欧美网站在线观看| 一区二区不卡视频在线观看| 欧美剧在线免费观看网站| 亚洲精品一区二区三区蜜桃| 精品国内二区三区| 在线观看免费毛片| 俺去了亚洲欧美日韩| 巨大荫蒂视频欧美另类大| 97国产成人精品视频| 妞干网免费在线视频| 国产区精品视频| 欧美激情精品| 欧美日韩精品免费看 | 日本丰满少妇黄大片在线观看| 国产精品传媒精东影业在线| 国产美女主播在线| 国产精品久久久久久模特 | 日韩在线视频在线观看| 久久婷婷麻豆| 色哟哟免费视频| 成人高清av在线| 91导航在线观看| 亚洲精品欧美二区三区中文字幕| 69成人免费视频| 欧美性大战久久久| 天天干天天做天天操| 亚洲网址你懂得| 羞羞视频在线观看不卡| 国产不卡av在线| av在线国产精品| 日韩免费电影一区二区三区| 99精品视频精品精品视频| 国产免费黄色av| 久久97超碰国产精品超碰| 欧美大片免费播放器| 国产精品美女久久久久久久| 免费看日韩毛片| 欧美伦理视频网站| 天堂影院在线| 久久久久久国产精品三级玉女聊斋| 伊人久久视频| 国产精品有限公司| 日韩88av| 热久久精品免费视频| 国产精品18久久久久久久久久久久 | 国产精品高潮呻吟久久av无限| 日本免费精品| 中文字幕色一区二区| 国产日韩欧美一区| 喷水视频在线观看| 亚洲视频一二三区| 在线免费观看一级片| 国产婷婷色综合av蜜臀av| 51xtv成人影院| 91免费看片网站| 国产一区二区三区四区二区| 播放灌醉水嫩大学生国内精品| 激情五月激情综合网| 内射毛片内射国产夫妻| 亚欧色一区w666天堂| 亚洲精品国产精品国| 中文字幕亚洲欧美日韩高清| 色偷偷色偷偷色偷偷在线视频| 国产精品美女诱惑| 亚洲电影影音先锋| 欧洲在线免费视频| 中文字幕av不卡| 中文字幕一二区| 亚洲欧洲在线播放| 岛国在线视频网站| 精品国产91亚洲一区二区三区www 精品国产_亚洲人成在线 | 精品视频久久久久久久| 男插女视频久久久| 国产精品亚洲一区| 欧美91视频| 无码人妻精品一区二区三区99不卡| 国产精品女主播av| 亚洲天堂久久久久| 中文字幕欧美日韩在线| gay欧美网站| 日韩精品一区二区三区丰满| 国产欧美日韩一级| 好吊视频在线观看| 日韩欧美成人网| 污视频免费在线看| 国产不卡av在线免费观看| 色天天色综合| 亚洲国产综合人成综合网站| 国产超碰人人模人人爽人人添| 中文字幕日韩av综合精品| 成人片免费看| 亚洲日本欧美在线| 蜜桃一区二区三区四区| 伊人在线视频观看| 欧美一级夜夜爽| 中国av在线播放| 国产伦精品一区二区三区四区视频| 欧美涩涩视频| 中文在线永久免费观看| 午夜精品福利在线| 在线观看国产麻豆| 国产精品网红直播| 偷拍欧美精品| www.啪啪.com| 精品福利在线视频| 免费在线观看一级毛片| 国产在线拍偷自揄拍精品| 国产精品久久久久久麻豆一区软件 | 久久日一线二线三线suv| 中文字幕乱码人妻二区三区| 最好看的2019的中文字幕视频| 巨胸喷奶水www久久久免费动漫| 视频一区二区视频| 国产成人精品影院| 天堂网免费视频| 在线视频欧美日韩精品| 祥仔av免费一区二区三区四区| 91黄色在线看| 久久青草欧美一区二区三区| 国产精品怡红院| 欧美国产日产韩国视频| 日本久久成人网| 亚洲免费成人在线视频| 亚洲一区二区影院| 日韩有码电影| 亚洲影院在线看| 亚洲日韩成人| 欧美黑人性猛交xxx| 亚洲精品大尺度| 国产精品.xx视频.xxtv| 欧美爱爱视频免费看| 亚洲国产高清aⅴ视频| 欧美一区二区三区激情| 国产激情综合五月久久| 综合一区在线| 香蕉久久久久久久| 精品国产成人在线影院| 午夜精品成人av| 农民人伦一区二区三区| 国产亚洲1区2区3区| 天堂中文资源在线观看| 国产一区香蕉久久| 日韩亚洲精品在线| 婷婷色中文字幕| 亚洲欧美激情精品一区二区| 99精品视频在线免费播放| 狠狠操精品视频| 亚洲一区二区三区四区在线| 精品亚洲成a人片在线观看| 国产一区再线| 国模无码大尺度一区二区三区| 一级黄色av片| 欧美二区在线播放| 日韩av免费大片| 久久久久久九九九九九| 精品免费视频一区二区| 成人黄色免费网站| 手机看片福利日韩| 精品久久久久久亚洲国产300| 免费av在线网址| 伊人久久大香线蕉精品| 91色视频在线| 蜜臀在线观看|