日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 前端技术 > HTML >内容正文

HTML

前端面试总结--JS

發(fā)布時(shí)間:2023/12/8 HTML 56 豆豆
生活随笔 收集整理的這篇文章主要介紹了 前端面试总结--JS 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

基本數(shù)據(jù)類(lèi)型

String、Number、Boolean、null、undefined

類(lèi)型判斷

判斷基本數(shù)據(jù)類(lèi)型用typeof: MDN

  • typeof 'aaa' // string
  • typeof 123 // number
  • typeof true // boolean
  • typeof null // object 因?yàn)閚ull和object的類(lèi)型標(biāo)簽都是0,null是一個(gè)空對(duì)象指針
  • typeof undefined // undefined
  • typeof 函數(shù) // function
  • typeof 其他對(duì)象 // object

判斷引用類(lèi)型用instanceof: MDN

  • instanceof 運(yùn)算符用來(lái)檢測(cè) constructor.prototype 是否存在于參數(shù) object 的原型鏈上。
  • 用instanceof來(lái)判斷基本數(shù)據(jù)類(lèi)型會(huì)報(bào)錯(cuò)

如何判斷一個(gè)數(shù)據(jù)是NaN

NaN==NaN; // false isNaN(NaN); // true Number.isNaN(NaN); // true Object.is(NaN,NaN); // true

null與undefined區(qū)別

null 表示值被定義但是個(gè)空值,null是一個(gè)空對(duì)象指針;
undefined 表示變量聲明但未賦值;
參考:理解 | 堆內(nèi)存棧內(nèi)存釋放、null和{}、undefined的區(qū)別

null == undefined // true null === undefined // falsetypeof null // object typeof undefined // undefinedNumber(null) // 0 Number(undefined) // NaN

作用域鏈

定義:訪問(wèn)一個(gè)變量時(shí),會(huì)先在當(dāng)前作用域查找該變量,若找到就直接使用,若未找到就繼續(xù)向上一層查找,直到全局作用域。這種鏈?zhǔn)讲樵?xún)關(guān)系就是作用域鏈。
其實(shí)作用域鏈在函數(shù)定義時(shí)已經(jīng)確定了,作用域鏈?zhǔn)呛秃瘮?shù)定義時(shí)的位置相關(guān)的。在函數(shù)創(chuàng)建的時(shí)候創(chuàng)建一個(gè)包含外部對(duì)象(包括全局對(duì)象和所有包含自己的對(duì)象)的作用域鏈,儲(chǔ)存在內(nèi)部[[scope]]屬性中。函數(shù)執(zhí)行的時(shí)候會(huì)創(chuàng)建一個(gè)執(zhí)行環(huán)境,通過(guò)復(fù)制[[scope]]屬性中的對(duì)象,構(gòu)建執(zhí)行環(huán)境的作用域鏈,并把自己的活動(dòng)對(duì)象推向當(dāng)前作用域鏈的前端以此形成完整的作用域鏈。[[scope]]屬性中保存的是對(duì)可訪問(wèn)變量對(duì)象的引用,而不是值的復(fù)制。
參考:函數(shù)的作用域鏈在定義時(shí)已經(jīng)確定!!

閉包

定義:閉包就是能夠讀取其他函數(shù)內(nèi)部變量的函數(shù)。
優(yōu)點(diǎn):局部變量可被重用且不會(huì)被污染(變量私有化)。
缺點(diǎn):由于變量不會(huì)被回收,所以濫用閉包會(huì)導(dǎo)致內(nèi)存溢出,所以要及時(shí)釋放不再需要的閉包。
代碼

function count() {var num = 0;return function(){num++;} } count();

閉包是在定義時(shí)確定的


參考:JS閉包的理解

事件處理機(jī)制

DOM事件流存在三個(gè)階段:事件捕獲階段處于目標(biāo)階段事件冒泡階段
在捕獲階段觸發(fā)事件:addEventListener(event, listener, true)
在冒泡階段出發(fā)事件:addEventListener(event, listener, false), attachEvent(event,listener)

事件委托

<ul><li></li><li></li><li></li> </ul>window.onload = function(){ var UL = document.getElementById('ul');//委托ul上的點(diǎn)擊事件,將當(dāng)前點(diǎn)擊的li節(jié)點(diǎn)變?yōu)榧t色UL.onclick = function(ev){ var e = ev || window.event;var target = e.target || window.event.srcElement; //判斷target是否符合要求的元素節(jié)點(diǎn) if(target.tagName.toLowerCase() == 'li'){//將當(dāng)前點(diǎn)擊這個(gè)li節(jié)點(diǎn)變成紅色 target.style.backgroundColor = 'red';} }}

如果我們需要在每一個(gè)li上綁定一個(gè)事件,就可以利用事件冒泡原理,將這些事件綁定到ul上,讓ul來(lái)代為處理。
優(yōu)點(diǎn):

  • 提高性能。每個(gè)函數(shù)都會(huì)占用內(nèi)存,使用一個(gè)事件可減少內(nèi)存占用。
  • 動(dòng)態(tài)監(jiān)聽(tīng)。新增的節(jié)點(diǎn)無(wú)需再重新綁定事件也擁有和其他節(jié)點(diǎn)一樣的事件。

阻止事件冒泡

W3C的方法: event.stopPropagation()
IE的方法: event.cancelBubble =true

function stopBubble(e) {if (e && e.stopPropagation) {e.stopPropagation();} else {window.event.cancelBubble = true;} }

取消默認(rèn)事件

W3C的方法: event.preventDefault()
IE的方法: event.returnValue =false

function stopDefault(e) {if (e && e.preventDefault) {e.preventDefault();} else {window.event.returnValue = false;} }

垃圾回收機(jī)制

標(biāo)記清除:垃圾收集器在運(yùn)行的時(shí)候會(huì)給存儲(chǔ)在內(nèi)存中的所有變量都加上標(biāo)記(當(dāng)然,可以使用任何標(biāo)記方式)。然后,它會(huì)去掉環(huán)境中的變量以及被環(huán)境中的變量引用的變量的標(biāo)記。而在此之后再被加上標(biāo)記的變量將被視為準(zhǔn)備刪除的變量,原因是環(huán)境中的變量已經(jīng)無(wú)法訪問(wèn)到這些變量了。最后,垃圾收集器完成內(nèi)存清除工作,銷(xiāo)毀那些帶標(biāo)記的值并回收它們所占用的內(nèi)存空間。
引用計(jì)數(shù):當(dāng)聲明了一個(gè)變量并將一個(gè)引用類(lèi)型值賦值該變量時(shí),則這個(gè)值的引用次數(shù)就是1.如果同一個(gè)值又被賦給另外一個(gè)變量,則該值得引用次數(shù)加1。相反,如果包含對(duì)這個(gè)值引用的變量又取 得了另外一個(gè)值,則這個(gè)值的引用次數(shù)減 1。當(dāng)這個(gè)值的引用次數(shù)變成 0時(shí),則說(shuō)明沒(méi)有辦法再訪問(wèn)這個(gè)值了,因而就可以將其占用的內(nèi)存空間回收回來(lái)。這樣,當(dāng)垃圾收集器下次再運(yùn)行時(shí),它就會(huì)釋放那 些引用次數(shù)為零的值所占用的內(nèi)存。
參考:js垃圾回收機(jī)制和引起內(nèi)存泄漏的操作;JS垃圾回收機(jī)制;談?wù)凧S 垃圾回收機(jī)制

this的指向

方法調(diào)用模式:this指向?qū)ο蟆?br /> 函數(shù)調(diào)用模式:this指向window。
構(gòu)造器調(diào)用模式:this指向?qū)嵗?br /> call和apply調(diào)用:this指向傳入的第一個(gè)參數(shù)。
箭頭函數(shù):this指向定義時(shí)所在的對(duì)象,call和apply失效;不可以當(dāng)做構(gòu)造函數(shù);不可以使用arguments對(duì)象;不可以使用yield命令。
參考:call、apply和bind方法的用法以及區(qū)別;函數(shù)的四種調(diào)用模式及this指向;JS this指向總結(jié)

call、apply和bind的用法以及區(qū)別

它們作用都是改變函數(shù)運(yùn)行時(shí)this的指向。

function func (a,b,c) {}// call的第一個(gè)參數(shù)是要綁定給this的值,從第二個(gè)參數(shù)開(kāi)始是接收的參數(shù)列表。 // 當(dāng)?shù)谝粋€(gè)參數(shù)為null、undefined的時(shí)候,this默認(rèn)指向window。 func.call(obj, 1, 2, 3)// apply接受兩個(gè)參數(shù),第一個(gè)參數(shù)是要綁定給this的值,第二個(gè)參數(shù)是一個(gè)參數(shù)數(shù)組。 // 當(dāng)?shù)谝粋€(gè)參數(shù)為null、undefined的時(shí)候,this默認(rèn)指向window。 func.apply(obj, [1,2,3])// bind和call很相似,第一個(gè)參數(shù)是this的指向,從第二個(gè)參數(shù)開(kāi)始是接收的參數(shù)列表。 // 區(qū)別在于bind的返回值是一個(gè)改變了this指向的函數(shù),不會(huì)立即執(zhí)行,原來(lái)的函數(shù)this的指向是不變的。 func.bind(obj, 1, 2, 3)

參考:call、apply和bind方法的用法以及區(qū)別;讓你弄懂 call、apply、bind的應(yīng)用和區(qū)別;「干貨」細(xì)說(shuō) call、apply 以及 bind 的區(qū)別和用法

原型和原型鏈

function SuperType(){this.property = true; } SuperType.prototype.getSuperValue = function(){return this.property; } var superInstance = new SuperType();

function SubType(){this.subProperty = false; } SubType.prototype.getSubValue = function(){return this.subProperty; } var subInstance = new SubType();

SubType.prototype = new SuperType(); SubType.prototype.getSubValue1 = function(){return this.subProperty; } var instance = new SubType(); alert(instance.getSuperValue()); //true //查找順序:instance→SubType.prototype→SuperType.prototype

注意:subInstance.constructor = SuperType,因?yàn)镾ubType.prototype指向了另一個(gè)對(duì)象,導(dǎo)致constructor 被重寫(xiě)了;同理,subInstance.getSubValue()也已經(jīng)訪問(wèn)不到了。

如何實(shí)現(xiàn)繼承

1-經(jīng)典繼承(借用構(gòu)造函數(shù))
優(yōu)點(diǎn):可以在子類(lèi)構(gòu)造函數(shù)中向父類(lèi)構(gòu)造函數(shù)傳參;避免了引用類(lèi)型的屬性被所有實(shí)例共享。
缺點(diǎn):方法都在構(gòu)造函數(shù)中定義,每次創(chuàng)建實(shí)例都會(huì)創(chuàng)建一遍方法,無(wú)法復(fù)用。

function SuperType(){this.colors = ['red','blue','green']; } function SubType(){SuperType.call(this);//繼承了SuperType } var instance1 = new SubType(); instance1.colors.push('black'); console.log(instance1.colors);//["red", "blue", "green", "black"] var instance2 = new SuperType(); console.log(instance2.colors);//["red", "blue", "green"]

2-原型鏈繼承(借用原型鏈)
優(yōu)點(diǎn):方法可以復(fù)用。
缺點(diǎn):引用類(lèi)型的屬性被所有實(shí)例共享;創(chuàng)建子類(lèi)的實(shí)例時(shí),不能向父類(lèi)傳參。

function SuperType(){ } SuperType.prototype.name= "Nicholas"; SuperType.prototype.sayName = function(){console.log(this.name); } function SubType(){ } SubType.prototype = new SuperType(); SubType.prototype.age = 29; SubType.prototype.sayAge = function(){console.log(this.age); } var instance1 = new SubType(); instance1.sayName();//"Nicholas" instance1.sayAge();//29

3-偽經(jīng)典繼承(組合繼承)
優(yōu)點(diǎn):融合原型鏈繼承和構(gòu)造函數(shù)繼承的優(yōu)點(diǎn),是 JavaScript 中最常用的繼承模式。

function SuperType(name){this.name = name;this.colors = ['red','blue','green']; } SuperType.prototype.sayName = function(){console.log(this.name); } function SubType(name,age){//繼承屬性SuperType.call(this,name);this.age = age; } //繼承方法 SubType.prototype = new SuperType(); SubType.prototype.constructor = SubType; SubType.prototype.sayAge = function(){console.log(this.age); }var instance1 = new SubType('Nicholas',29); instance1.colors.push('black'); console.log(instance1.colors);//["red", "blue", "green", "black"] instance1.sayName();//"Nicholas" instance1.sayAge();//29 var instance2 = new SubType('Greg',27); console.log(instance2.colors);//["red", "blue", "green"] instance2.sayName();//"Greg" instance2.sayAge();//27

參考:js各種繼承方式和優(yōu)缺點(diǎn)的介紹

新建對(duì)象的方法

1-直接新建

let person = {sex: 'femail',age: '19',eat: function(){console.log('eating');} }

2-工廠模式

function createAPerson(){let person = new Object();person.sex = 'femail';person.age = '19';person.eat = function(){console.log('eating');}return person; } let person = createAPerson();

3-構(gòu)造函數(shù)模式

function Person(){this.sex = 'femail';this.age = '19';this.eat = function(){console.log('eating');} } let person = new Person();

4-原型模式

function Person(){ } Person.prototype.sex = 'femail'; Person.prototype.age = '19'; Person.prototype.eat = function(){console.log('eating'); } let person = new Person();

5-混合模式(組合使用構(gòu)造函數(shù)模式和原型模式)

function Person(){this.sex = 'femail';this.age = '19'; } Person.prototype.eat = function(){console.log('eating'); } let person = new Person();

參考:js中對(duì)象與對(duì)象創(chuàng)建方法的各種方法

EventLoop

宏任務(wù)
宏任務(wù)的例子有很多,包括創(chuàng)建主文檔對(duì)象、解析HTML、執(zhí)行主線JavaScript代碼,更改當(dāng)前的URL、以及各種事件、setTimeout、setInterval等。
微任務(wù)
微任務(wù)是更小的任務(wù),主要包括Promise的回調(diào)函數(shù)、DOM發(fā)生變化。微任務(wù)需要盡可能快的、通過(guò)異步的方式執(zhí)行。
事件循環(huán)基于兩個(gè)基本原則
一次處理一個(gè)任務(wù)。
一個(gè)任務(wù)開(kāi)始后直到運(yùn)行完成,不會(huì)被其他任務(wù)中斷。
參考:Promise自我修養(yǎng)之事件循環(huán)

怎么區(qū)分宏任務(wù)和微任務(wù)

宏任務(wù)是由宿主發(fā)起的,而微任務(wù)由JavaScript自身發(fā)起
參考鏈接:宏任務(wù)和微任務(wù)到底是什么?

MutationObserver

描述:監(jiān)視一個(gè)節(jié)點(diǎn)及其全部子節(jié)點(diǎn)樹(shù)的添加、移除元素,以及任何屬性變化的事件
應(yīng)用:群組組件監(jiān)聽(tīng)disabled屬性

var targetNode = document.querySelector("#someElement"); var observerOptions = {childList: true, // 觀察目標(biāo)子節(jié)點(diǎn)的變化,是否有添加或者刪除attributes: true, // 觀察屬性變動(dòng)subtree: true // 觀察后代節(jié)點(diǎn),默認(rèn)為 false } var observer = new MutationObserver(callback); observer.observe(targetNode, observerOptions);//回調(diào)函數(shù) function callback(mutationList, observer) {mutationList.forEach((mutation) => {switch(mutation.type) {case 'childList':/* 從樹(shù)上添加或移除一個(gè)或更多的子節(jié)點(diǎn);參見(jiàn) mutation.addedNodes 與mutation.removedNodes */break;case 'attributes':/* mutation.target 中某節(jié)點(diǎn)的一個(gè)屬性值被更改;該屬性名稱(chēng)在 mutation.attributeName 中,該屬性之前的值為 mutation.oldValue */break;}}); }

變量和函數(shù)的優(yōu)先級(jí)

函數(shù)提升優(yōu)先級(jí)高于變量提升,且不會(huì)被同名變量聲明覆蓋,但是會(huì)被變量賦值后覆蓋。而且存在同名函數(shù)與同名變量時(shí),優(yōu)先執(zhí)行函數(shù)。
參考:JS中變量提升與函數(shù)提升及其優(yōu)先級(jí)

堆內(nèi)存和棧內(nèi)存

參考:JavaScript棧內(nèi)存和堆內(nèi)存

深拷貝和淺拷貝

深拷貝和淺拷貝是針對(duì)引用數(shù)據(jù)類(lèi)型的,比如數(shù)組和對(duì)象。基本數(shù)據(jù)類(lèi)型不存在深淺拷貝之分
淺拷貝:只復(fù)制引用,原對(duì)象屬性值改變,新的屬性值也會(huì)改變。(只復(fù)值第一層
深拷貝:創(chuàng)建一個(gè)新的內(nèi)存,復(fù)制真正的值,原對(duì)象屬性值改變,新的屬性值不會(huì)受影響。(復(fù)制每一層

淺拷貝數(shù)組:

// 方法1 let arr1 = [1,2,3,4,5]; let arr2 = [...arr1];// 方法2 let arr1 = [1,2,3,4,5]; let arr2 = arr1.slice(0)// 方法3 let arr1 = [1,2,3,4,5]; let arr2 = arr1.concat()

淺拷貝對(duì)象:

// 方法1 var o2 = Object.assign({}, o1)// 方法2 var o2 = {...o1}

深拷貝數(shù)組和對(duì)象:

// 方法1,需要求目標(biāo)對(duì)象(非 undefined,function) const obj2 = JSON.parse(JSON.stringify(obj1));// 方法2 function deepClone(item){const target = item.constructor === Array ? [] : {}; // 判斷復(fù)制的目標(biāo)是數(shù)組還是對(duì)象for(let keys in item){ // 遍歷目標(biāo)if(item.hasOwnProperty(keys)){if(item[keys] && typeof item[keys] === 'object'){ // 如果值是對(duì)象,就遞歸一下target[keys] = item[keys].constructor === Array ? [] : {};target[keys] = deepClone(item[keys]);}else{ // 如果不是,就直接賦值target[keys] = item[keys];}}}return target; }

淺拷貝內(nèi)存分析

深拷貝內(nèi)存分析

參考:內(nèi)存分析-深淺拷貝

函數(shù)柯里化(Currying)

定義:柯里化是指通過(guò)函數(shù)調(diào)用繼續(xù)返回函數(shù)的方式,實(shí)現(xiàn)多次接收參數(shù)最后統(tǒng)一處理的函數(shù)編碼形式
優(yōu)點(diǎn):函數(shù)復(fù)用、延遲執(zhí)行、提前確認(rèn)
參考:詳解JS函數(shù)柯里化;「前端面試題系列6」理解函數(shù)的柯里化

// 一個(gè)普通函數(shù) function sum(a, b, c) {console.log(a + b + c); }// 柯里化后 const fn = curry(sum)// 可能的調(diào)用方式 fn(1, 2, 3); // 6 fn(1, 2)(3); // 6 fn(1)(2, 3); // 6 fn(1)(2)(3); // 6// 優(yōu)點(diǎn)1:可以復(fù)用 // 優(yōu)點(diǎn)2:可延遲執(zhí)行 const tempF = fn(1, 2) const res1 = tempF(3) // 6 const res2 = tempF(4) // 7// 柯里化實(shí)現(xiàn)方法 function curry (fn, currArgs) {return function() {// 將 arguments 數(shù)組化let args = [].slice.call(arguments);// 首次調(diào)用時(shí),若未提供最后一個(gè)參數(shù)currArgs,則不用進(jìn)行args的拼接if (currArgs !== undefined) {args = args.concat(currArgs);}// 遞歸調(diào)用if (args.length < fn.length) {return curry(fn, args);}// 遞歸出口return fn.apply(null, args);} }// 優(yōu)點(diǎn)3:提前確認(rèn):可以在不同條件下返回不同的函數(shù),省去重復(fù)的判斷過(guò)程 // before var on = function(element, event, handler) {if (document.addEventListener) {if (element && event && handler) {element.addEventListener(event, handler, false);}} else {if (element && event && handler) {element.attachEvent('on' + event, handler);}} } // after var on = (function() {if (document.addEventListener) {return function(element, event, handler) {if (element && event && handler) {element.addEventListener(event, handler, false);}};} else {return function(element, event, handler) {if (element && event && handler) {element.attachEvent('on' + event, handler);}};} })();

數(shù)組的常用方法

arr.push() // 從后面添加元素,返回值為添加完后的數(shù)組的長(zhǎng)度 arr.pop() // 從后面刪除元素,只能是一個(gè),返回值是刪除的元素 arr.shift() // 從前面刪除元素,只能刪除一個(gè) 返回值是刪除的元素 arr.unshift() // 從前面添加元素, 返回值是添加完后的數(shù)組的長(zhǎng)度 arr.splice(i,n) // 刪除從i(索引值)開(kāi)始之后的n個(gè)元素。返回值是刪除的元素 arr.concat() // 連接兩個(gè)數(shù)組 返回值為連接后的新數(shù)組 str.split() // 將字符串轉(zhuǎn)化為數(shù)組 arr.sort() // 將數(shù)組進(jìn)行排序,返回值是排好的數(shù)組,默認(rèn)是按照最左邊的數(shù)字進(jìn)行排序,不是按照數(shù)字大小排序的 arr.reverse() // 將數(shù)組反轉(zhuǎn),返回值是反轉(zhuǎn)后的數(shù)組 arr.slice(start,end) // 切去索引值start到索引值end的數(shù)組,不包含end索引的值,返回值是切出來(lái)的數(shù)組 arr.forEach(callback) // 遍歷數(shù)組,無(wú)return 即使有return,也不會(huì)返回任何值,并且會(huì)影響原來(lái)的數(shù)組 arr.map(callback) // 映射數(shù)組(遍歷數(shù)組),有return 返回一個(gè)新數(shù)組 arr.filter(callback) // 過(guò)濾數(shù)組,返回一個(gè)滿足要求的數(shù)組 arr.reduce(callback) // 對(duì)數(shù)組中的每個(gè)元素執(zhí)行一個(gè)由您提供的reducer函數(shù)(升序執(zhí)行),將其結(jié)果匯總為單個(gè)返回

普通函數(shù)和構(gòu)造函數(shù)的區(qū)別

  • 構(gòu)造函數(shù)也是一個(gè)普通函數(shù),創(chuàng)建方式和普通函數(shù)一樣,但是構(gòu)造函數(shù)習(xí)慣上首字母大寫(xiě);
  • 調(diào)用方式不一樣,普通函數(shù)直接調(diào)用,構(gòu)造函數(shù)要用關(guān)鍵字new來(lái)調(diào)用;
  • 調(diào)用時(shí),構(gòu)造函數(shù)內(nèi)部會(huì)創(chuàng)建一個(gè)新對(duì)象,就是實(shí)例,普通函數(shù)不會(huì)創(chuàng)建新對(duì)象;
  • 構(gòu)造函數(shù)內(nèi)部的this指向?qū)嵗?#xff0c;普通函數(shù)內(nèi)部的this指向調(diào)用函數(shù)的對(duì)象(如果沒(méi)有對(duì)象調(diào)用,默認(rèn)為window);
  • 構(gòu)造函數(shù)默認(rèn)的返回值是創(chuàng)建的對(duì)象(也就是實(shí)例),普通函數(shù)的返回值由return語(yǔ)句決定;
  • 構(gòu)造函數(shù)的函數(shù)名與類(lèi)名相同;

防抖和節(jié)流

防抖:當(dāng)持續(xù)觸發(fā)事件時(shí),一定時(shí)間段內(nèi)沒(méi)有再觸發(fā)事件,事件處理函數(shù)才會(huì)執(zhí)行一次,如果設(shè)定的時(shí)間到來(lái)之前,又一次觸發(fā)了事件,就重新開(kāi)始延時(shí)。
節(jié)流:當(dāng)持續(xù)觸發(fā)事件時(shí),保證一定時(shí)間段內(nèi)只調(diào)用一次事件處理函數(shù)。
參考:js防抖和節(jié)流
代碼:

// 防抖 function debounce(fn, wait) { var timeout = null; return function() { if(timeout !== null) clearTimeout(timeout); timeout = setTimeout(fn, wait); } } // 處理函數(shù) function handle() { console.log(Math.random()); } // 滾動(dòng)事件 window.addEventListener('scroll', debounce(handle, 1000)); // 節(jié)流 var throttle = function(func, delay) { var prev = Date.now(); return function() { var context = this; var args = arguments; var now = Date.now(); if (now - prev >= delay) { func.apply(context, args); prev = Date.now(); } } } // 處理函數(shù) function handle() { console.log(Math.random()); } // 滾動(dòng)事件 window.addEventListener('scroll', throttle(handle, 1000));

new 操作符做了什么

// 創(chuàng)建了一個(gè)空對(duì)象obj var obj = {}; // 將這個(gè)空對(duì)象的__proto__成員指向了Base函數(shù)對(duì)象prototype成員對(duì)象 obj.__proto__ = Base.prototype; // 將Base函數(shù)對(duì)象的this指針替換成obj,然后調(diào)用Base函數(shù) Base.call(obj);

參考:js中的new()到底做了些什么??

websocket

websocket的特點(diǎn):

  • 服務(wù)器可以主動(dòng)向客戶(hù)端推送信息,客戶(hù)端也可以主動(dòng)向服務(wù)器發(fā)送信息,是真正的雙向平等對(duì)話
  • 建立在 TCP 協(xié)議之上,服務(wù)器端的實(shí)現(xiàn)比較容易
  • 與 HTTP 協(xié)議有著良好的兼容性。默認(rèn)端口也是80和443,并且握手階段采用 HTTP 協(xié)議,因此握手時(shí)不容易屏蔽,能通過(guò)各種 HTTP 代理服務(wù)器
  • 數(shù)據(jù)格式比較輕量,性能開(kāi)銷(xiāo)小,通信高效
  • 可以發(fā)送文本,也可以發(fā)送二進(jìn)制數(shù)據(jù)
  • 有同源限制,客戶(hù)端可以與任意服務(wù)器通信
  • 協(xié)議標(biāo)識(shí)符是ws(如果加密,則為wss),服務(wù)器網(wǎng)址就是 URL(ws://example.com:80/some/path)

WebSocket 是什么原理?為什么可以實(shí)現(xiàn)持久連接?

export default {name : 'websocket',data() {return {websock: null,}},created() {this.initWebSocket();},destroyed() {this.websock.close() //離開(kāi)路由之后斷開(kāi)websocket連接},methods: {initWebSocket(){ //初始化weosocketconst wsuri = "ws://127.0.0.1:8080";this.websock = new WebSocket(wsuri);this.websock.onmessage = this.websocketonmessage;this.websock.onopen = this.websocketonopen;this.websock.onerror = this.websocketonerror;this.websock.onclose = this.websocketclose;},websocketonopen(){ //連接建立之后執(zhí)行send方法發(fā)送數(shù)據(jù)let actions = {"test":"12345"};this.websocketsend(JSON.stringify(actions));},websocketonerror(){//連接建立失敗重連this.initWebSocket();},websocketonmessage(e){ //數(shù)據(jù)接收const redata = JSON.parse(e.data);},websocketsend(Data){//數(shù)據(jù)發(fā)送this.websock.send(Data);},websocketclose(e){ //關(guān)閉console.log('斷開(kāi)連接',e);},}, }

異步請(qǐng)求xhr、ajax、axios與fetch的區(qū)別比較

xhr:現(xiàn)代瀏覽器,最開(kāi)始與服務(wù)器交換數(shù)據(jù),都是通過(guò)XMLHttpRequest對(duì)象。它可以使用JSON、XML、HTML和text文本等格式發(fā)送和接收數(shù)據(jù)。

  • 優(yōu)點(diǎn):
    不重新加載頁(yè)面的情況下更新網(wǎng)頁(yè)
    在頁(yè)面已加載后從服務(wù)器請(qǐng)求/接收數(shù)據(jù)
    在后臺(tái)向服務(wù)器發(fā)送數(shù)據(jù)
  • 缺點(diǎn):
    使用起來(lái)也比較繁瑣,需要設(shè)置很多值
    早期的IE瀏覽器有自己的實(shí)現(xiàn),這樣需要寫(xiě)兼容代碼
  • 代碼:
var request = new XMLHttpRequest(); request.open("GET", "get.php", true); request.send(); //該屬性每次變化時(shí)會(huì)觸發(fā) request.onreadystatechange = function(){// readyState: 響應(yīng)是否成功// 0:請(qǐng)求為初始化,open還沒(méi)有調(diào)用// 1:服務(wù)器連接已建立,open已經(jīng)調(diào)用了// 2:請(qǐng)求已接收,接收到頭信息了// 3:請(qǐng)求處理中,接收到響應(yīng)主題了// 4:請(qǐng)求已完成,且響應(yīng)已就緒,也就是響應(yīng)完成了//若響應(yīng)完成且請(qǐng)求成功if(request.readyState === 4 && request.status === 200){//do something, e.g. request.responseText} }

jQuery ajax:jQuery對(duì)XMLHttpRequest對(duì)象的封裝。

  • 優(yōu)點(diǎn):
    對(duì)原生XHR的封裝,做了兼容處理,簡(jiǎn)化了使用。
    增加了對(duì)JSONP的支持,可以簡(jiǎn)單處理部分跨域。
  • 缺點(diǎn):
    如果有多個(gè)請(qǐng)求,并且有依賴(lài)關(guān)系的話,容易形成回調(diào)地獄。
    本身是針對(duì)MVC的編程,不符合現(xiàn)在前端MVVM的浪潮。
    ajax是jQuery中的一個(gè)方法。如果只是要使用ajax卻要引入整個(gè)jQuery非常的不合理。
  • 代碼:
$.ajax({type: 'POST',url: url, data: data,dataType: dataType,success: function () {},error: function () {} })

axios:Axios是一個(gè)基于promise的HTTP庫(kù),可以用在瀏覽器和 node.js 中。它本質(zhì)也是對(duì)原生XMLHttpRequest的封裝,只不過(guò)它是Promise的實(shí)現(xiàn)版本,符合最新的ES規(guī)范。

  • 優(yōu)點(diǎn):
    從瀏覽器中創(chuàng)建XMLHttpRequests
    從 node.js 創(chuàng)建 http 請(qǐng)求
    支持 Promise API
    攔截請(qǐng)求和響應(yīng)
    轉(zhuǎn)換請(qǐng)求數(shù)據(jù)和響應(yīng)數(shù)據(jù)
    取消請(qǐng)求
    自動(dòng)轉(zhuǎn)換 JSON 數(shù)據(jù)
    客戶(hù)端支持防御 XSRF
  • 缺點(diǎn):
    只持現(xiàn)代代瀏覽器
  • 代碼:
axios({method: 'post',url: '/user/12345',data: {firstName: 'liu',lastName: 'weiqin'}}).then(res => console.log(res)).catch(err => console.log(err))

fetch:fetch是低層次的API,代替XHR,可以輕松處理各種格式,非文本化格式。可以很容易的被其他技術(shù)使用,例如Service Workers。但是想要很好的使用fetch,需要做一些封裝處理。

  • 優(yōu)點(diǎn):
    mode: 'no-cors’就可以跨域了
  • 缺點(diǎn):
    fetch只對(duì)網(wǎng)絡(luò)請(qǐng)求報(bào)錯(cuò),對(duì)400,500都當(dāng)做成功的請(qǐng)求,需要封裝去處理
    fetch默認(rèn)不會(huì)帶cookie,需要添加配置項(xiàng)
    fetch不支持abort,不支持超時(shí)控制,使用setTimeout及Promise.reject的實(shí)現(xiàn)超時(shí)控制并不能阻止請(qǐng)求過(guò)程繼續(xù)在后臺(tái)運(yùn)行,造成了流量的浪費(fèi)
    fetch沒(méi)有辦法原生監(jiān)測(cè)請(qǐng)求的進(jìn)度,而XHR可以
  • 代碼:
fetch('/users.json', {method: 'post', mode: 'no-cors',data: {} }).then(function() { /* handle response */ });

參考:異步請(qǐng)求xhr、ajax、axios與fetch的區(qū)別比較

對(duì)異步的理解

js是單線程的,一次只能做一件事情,遇到需要等待結(jié)果的任務(wù),如果一直等候,就會(huì)阻塞進(jìn)程,異步就是可以在某個(gè)任務(wù)等待結(jié)果的時(shí)候先執(zhí)行其他任務(wù),等結(jié)果返回后再執(zhí)行這個(gè)任務(wù)

總結(jié)

以上是生活随笔為你收集整理的前端面试总结--JS的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

99 久久久久 | 色婷婷播放 | 久久精品中文 | 色偷偷中文字幕 | 婷婷亚洲综合五月天小说 | 欧美性生活免费 | 久久久久国产精品www | 久操综合| 成人综合日日夜夜 | 91大神精品视频在线观看 | 97激情影院 | 色哟哟国产精品 | av在线色| 中文字幕av全部资源www中文字幕在线观看 | 一区二区视频欧美 | 综合天天| 国产成人333kkk | 91xav| 精品国产一二区 | 精品国产一区二区三区不卡 | 国产精品 日韩精品 | 韩国视频一区二区三区 | 国产精品原创 | 欧洲激情综合 | 欧美人人 | 国产精选视频 | 婷婷网站天天婷婷网站 | 国产资源av | 日韩毛片在线播放 | 国产在线免费观看 | 波多野结衣电影一区 | 免费看国产视频 | 奇米影视8888在线观看大全免费 | 国产成人l区 | 欧美天天综合网 | 国产传媒一区在线 | 一区二区三区影院 | 国产91丝袜在线播放动漫 | 欧美激情精品一区 | 国产精品乱看 | 婷婷丁香在线 | 波多野结衣电影一区 | 五月婷香蕉久色在线看 | 久久综合9988久久爱 | 99视频在线免费观看 | 国产一区二区三区免费在线观看 | 国产精品久久久久久久久蜜臀 | 成人av免费看 | 91av播放| 欧美综合色在线图区 | 久久精品福利视频 | 久草在线欧美 | 九九九九热精品免费视频点播观看 | 国产亚洲精品综合一区91 | 九九免费精品视频 | 日韩电影精品 | 日本精品视频在线观看 | 免费色网站 | 精品一区电影 | 日韩欧美一区二区三区黑寡妇 | 国产高清综合 | 天天爽夜夜爽人人爽曰av | 国产在线毛片 | 成人黄视频 | 黄色免费网站 | 国产成人久久精品亚洲 | 亚洲精品午夜久久久久久久 | 一区二区三区四区五区六区 | 欧美日韩伦理在线 | 丁香六月婷婷开心 | 特级毛片aaa | 日本公妇色中文字幕 | 中文字幕在线不卡国产视频 | 欧美日韩大片在线观看 | 天天爱综合 | 少妇bbw撒尿| 欧美精品一区二区三区一线天视频 | 国内外成人免费在线视频 | 亚洲另类视频在线 | 一区免费在线 | 成人av资源网站 | 99久久夜色精品国产亚洲 | 在线观看mv的中文字幕网站 | 91女神的呻吟细腰翘臀美女 | 欧美最爽乱淫视频播放 | 福利一区二区三区四区 | 国产综合在线观看视频 | 国产亚洲精品中文字幕 | 久草在线电影网 | 夜夜操网站 | 中文字幕国产亚洲 | 日日爽| 亚洲精品玖玖玖av在线看 | 亚洲成a人片77777kkkk1在线观看 | 日韩免费在线 | 字幕网在线观看 | 日本精品久久久久 | www.五月天色 | 五月婷婷黄色网 | 最近最新最好看中文视频 | 麻豆国产精品一区二区三区 | 亚洲最新视频在线播放 | 一区二区三区www | av千婊在线免费观看 | 日韩亚洲在线观看 | 超碰97免费观看 | 久久久久久免费网 | 久久国产片 | 青草视频免费观看 | 91久久精品日日躁夜夜躁国产 | av色综合网 | 中文字幕成人在线 | 在线国产日韩 | 免费网站看av片 | 中文字幕中文字幕在线中文字幕三区 | 午夜国产一区二区三区四区 | 亚洲国产精品传媒在线观看 | 免费在线观看av网站 | 欧美视频在线观看免费网址 | 极品国产91在线网站 | 91麻豆网| 天天射综合 | 麻豆国产在线视频 | 在线观影网站 | 亚洲精品福利在线 | 天天爽天天摸 | 天天鲁天天干天天射 | 国产精品婷婷 | 日韩成人邪恶影片 | 日韩精品久久久久久 | 日韩在线观看视频在线 | 成人a级大片| 成人免费看片网址 | 91亚洲影院 | 日批视频在线 | 天天综合网天天 | 日日操日日插 | 夜夜夜精品 | 在线免费黄色av | av在线电影网站 | 久国产在线播放 | 国产成人精品一区二区三区福利 | 日韩天天操 | www免费黄色 | 久久久.com| 国产精品国内免费一区二区三区 | 中文字幕一区二区三区久久 | 亚洲,播放 | 成人高清在线 | 高清国产在线一区 | 亚洲精品国产综合久久 | 精品国产伦一区二区三区观看方式 | 亚洲一区二区三区毛片 | 国产精品手机在线观看 | 日韩在观看线 | 在线观看va| aaa亚洲精品一二三区 | 成人免费xyz网站 | 天天色天天色 | 色噜噜在线观看 | 免费毛片aaaaaa | 欧美一二三四在线 | 91九色在线观看 | av免费网站观看 | 国产精品久久久久毛片大屁完整版 | 日韩欧美视频一区二区三区 | 在线之家免费在线观看电影 | 狠狠躁夜夜躁人人爽视频 | 精品久久久久一区二区国产 | 国产99久 | 天天插天天射 | 久草在线手机观看 | 久久久久这里只有精品 | 精品一区电影 | 91九色在线播放 | 四虎欧美 | 六月丁香在线观看 | 黄色免费观看网址 | 波多野结衣在线视频免费观看 | 国产精品久久婷婷六月丁香 | 精品国产一二区 | 亚洲一二视频 | 97久久久免费福利网址 | 国产在线视频一区二区三区 | 日韩欧美视频一区二区 | 91麻豆精品国产91久久久使用方法 | 91久久偷偷做嫩草影院 | 国产精品久久电影观看 | 中文字幕日韩无 | 狠狠亚洲| 91中文字幕网 | 国产亚洲欧美在线视频 | 免费日韩 精品中文字幕视频在线 | 国产一区高清在线 | 成人网大片 | 精品99在线观看 | 日韩av专区 | 国产一级性生活视频 | 一区二区三区四区不卡 | 人人插人人澡 | 国产黄色片久久久 | 国产精品免费观看视频 | 亚洲一级国产 | 日本性生活一级片 | av中文天堂| 综合色天天 | 91免费观看网站 | 五月婷婷在线播放 | 国产精品麻豆99久久久久久 | 国产一级久久久 | 日韩中文字幕a | 在线天堂日本 | 91看片淫黄大片一级在线观看 | 免费国产在线视频 | 婷婷国产v亚洲v欧美久久 | 2000xxx影视 | 99久久精品网 | 久久免费在线观看 | 成人免费中文字幕 | 香蕉精品视频在线观看 | 伊人久操 | 中文字幕韩在线第一页 | av免费在线看网站 | 国产中文字幕精品 | 亚洲精品国产片 | 国产精品不卡在线观看 | 涩涩伊人 | 青青草国产精品视频 | 99性视频 | 特级a老妇做爰全过程 | 深爱婷婷网 | 国产免费a | 黄色一级大片在线免费看国产一 | 天天干天天操天天入 | a√天堂资源 | 免费网站黄色 | 久久福利 | 精品国产精品久久 | www色,com | 国产精品美女免费看 | 色视频网页| 最近中文字幕大全中文字幕免费 | 中文字幕精品在线 | 久久久久久综合 | 在线中文字幕一区二区 | 精品在线视频一区二区三区 | 亚洲国产高清视频 | 国产福利不卡视频 | 国产高清精品在线观看 | 中文亚洲欧美日韩 | 精品国产一区二区三区久久影院 | 一级黄色免费 | 久久人操 | 亚洲一区二区三区在线看 | 日本在线视频网址 | 不卡的av电影在线观看 | 射综合网| 久久久久欧美精品999 | 四虎成人网 | 欧美 亚洲 另类 激情 另类 | 伊人资源视频在线 | 黄色视屏av| 久久艹人人 | 久插视频 | 免费大片黄在线 | 免费一级日韩欧美性大片 | 免费在线黄色av | 香蕉视频在线看 | 992tv在线观看 | 天天色天天干天天色 | 麻豆传媒视频在线播放 | 亚洲精品黄色在线观看 | 日韩一级黄色片 | 日日操操 | 97超碰色偷偷 | 国产视频18 | 久久久免费播放 | 欧洲亚洲精品 | 中文字幕免费高清av | 日韩av男人的天堂 | 成人一区二区三区在线 | 国产成人一区二区三区免费看 | 成人久久| 亚洲在线网址 | 狠狠躁日日躁狂躁夜夜躁 | 久久99精品一区二区三区三区 | 成片视频免费观看 | 成人资源在线播放 | 欧美日韩一区二区三区在线观看视频 | 国产无遮挡猛进猛出免费软件 | 97成人在线 | 人九九精品 | 国产精品午夜久久 | av中文字幕av| 97免费中文视频在线观看 | 狠狠干婷婷 | 精品国产乱码久久久久久1区二区 | 少妇啪啪av入口 | 国产精品欧美久久久久三级 | 五月婷婷久 | 国产精品一区二区在线免费观看 | 久久99久久久久久 | 日韩精品一区二区三区在线视频 | 在线视频婷婷 | 成人h电影 | 欧美日韩在线精品 | 欧美日韩国产二区三区 | 美女网站黄在线观看 | 99综合电影在线视频 | 国产在线观看中文字幕 | 黄色三级在线看 | 国产综合视频在线观看 | 日本aaaa级毛片在线看 | 日本一区二区三区免费看 | 久草视频视频在线播放 | 久一网站 | 国产免费中文字幕 | 九九九九九精品 | 色天天中文 | 日韩二区三区在线 | 欧美一级爽 | 久久成人一区 | 亚洲无在线 | 国产精品毛片久久久久久久久久99999999 | 中文字幕文字幕一区二区 | 成人免费xyz网站 | 在线观看日韩国产 | 99久久久国产免费 | av资源在线看 | 99在线热播 | 一区二区三区高清在线 | 亚洲国产美女精品久久久久∴ | 欧美男男激情videos | 精品久久网站 | 欧美最猛性xxxxx免费 | 日韩色在线 | 五月天丁香综合 | 久久久国产毛片 | 亚洲国产成人精品电影在线观看 | 伊人小视频 | 天天夜夜亚洲 | 国产高清精 | 久久精品视 | 国产一级片不卡 | 黄色一级动作片 | 精品一区二区三区久久 | 日本久久久久 | 中文日韩在线 | 色a在线观看 | 特级a毛片 | 亚洲国产精品人久久电影 | 色狠狠操| 最近字幕在线观看第一季 | 国产精成人品免费观看 | 欧美一级视频免费 | www九九热| 在线观看国产区 | 成人久久免费 | 欧美日韩高清一区二区 国产亚洲免费看 | 三级在线视频播放 | 蜜臀av一区 | 国产精品久久久久久久久久久久冷 | 国产成人三级三级三级97 | 国产美女精品视频 | 久久精品国亚洲 | 黄色免费视频在线观看 | 久久成人免费电影 | 午夜色婷婷| 亚洲成人av免费 | 这里有精品在线视频 | 最新日韩在线观看视频 | 中文字幕在线观看网 | 中文字幕在线看视频国产 | 伊人天堂久久 | 成人午夜精品福利免费 | 国产日产欧美在线观看 | 亚洲国产成人高清精品 | 亚洲精品在线观看不卡 | 欧美性生活小视频 | 西西444www大胆无视频 | 最近乱久中文字幕 | 国产精品美女久久久网av | 精品一二三四视频 | 乱男乱女www7788| 天天草天天 | 六月丁香六月婷婷 | 久久激情五月婷婷 | 丝袜+亚洲+另类+欧美+变态 | 免费美女久久99 | 狠狠色噜噜狠狠狠狠 | 国产精品久久久久久久久久免费 | 国产91在线观 | 成年人视频在线免费播放 | 99亚洲精品 | 色偷偷88欧美精品久久久 | 九九热视频在线播放 | 黄污网站在线观看 | 91精品一 | 三级黄免费看 | 91精品国产乱码 | 久草久视频 | 高清中文字幕av | 三级黄色欧美 | 国产91综合一区在线观看 | 最近日本mv字幕免费观看 | 在线播放av网址 | 中文字幕日韩电影 | 免费福利影院 | 国产理论一区二区三区 | 狠狠狠狠狠狠狠干 | 日韩久久精品一区二区 | av福利在线看 | 日韩专区av| av福利电影 | 激情婷婷色 | 国产一区二区免费在线观看 | 国产精品一区二区av麻豆 | 九九亚洲视频 | 黄色毛片一级 | 亚洲国产激情 | 成人久久久久久久久久 | 美女网站视频一区 | 欧美一级激情 | 深夜视频久久 | 国内丰满少妇猛烈精品播 | 成人免费大片黄在线播放 | 久久夜色网 | 色人久久 | 国产精品久久影院 | av在线激情 | 97视频中文字幕 | 91在线精品秘密一区二区 | 亚洲三级毛片 | 91成人网在线观看 | 亚洲精品影视在线观看 | 91亚洲精品国偷拍自产在线观看 | av丝袜天堂 | 综合天天| 久久精品九色 | 国产久草在线观看 | 97高清免费视频 | 麻豆精品传媒视频 | 日韩精选在线 | 精品久久久久久综合 | 国产精品18久久久久久vr | 美女在线免费视频 | 欧美精品日韩 | 久久久久久久久久久影视 | 一级黄色片在线观看 | 日日操日日干 | 一区二区三区国 | 免费在线一区二区三区 | 久久神马影院 | 91中文视频| 中文av在线免费观看 | 久久99久久99精品免观看软件 | 黄色毛片一级 | 三上悠亚一区二区在线观看 | 福利片免费看 | 国产高清99 | 亚洲国产精久久久久久久 | 国产精品乱码高清在线看 | 天天操天天玩 | 午夜色站 | 亚洲午夜在线视频 | 日本久热| 亚洲成aⅴ人片久久青草影院 | 亚洲视频精选 | 久久人视频 | 麻豆国产精品va在线观看不卡 | 免费看色的网站 | 中文字幕综合在线 | 亚洲欧美精品一区二区 | 亚洲欧洲美洲av | 国产视频资源 | 午夜精品福利一区二区 | 亚洲第一区在线播放 | 成 人 黄 色 片 在线播放 | 婷婷色站 | 免费在线观看日韩视频 | 在线观看mv的中文字幕网站 | 99色亚洲 | 久草在线最新 | 在线黄色免费av | 黄色一级大片在线免费看国产一 | 国产精品久久久久四虎 | 国产亚洲精品日韩在线tv黄 | 青青草久草在线 | 久草干| 日韩欧美一区二区不卡 | 免费观看一区二区 | 丁香六月天婷婷 | 中文字幕视频一区二区 | 黄色免费高清视频 | 欧美一级性生活 | 天天草天天干天天 | 在线免费观看国产黄色 | 欧美日韩国产在线精品 | 亚洲综合色婷婷 | 欧美久久久久久久久久久久 | 中文字幕在线观看网站 | 亚洲精品www. | 久久久久久久久久久免费av | 久久精品免费看 | 欧美怡红院视频 | 在线观看国产 | 亚洲一区二区三区四区精品 | 国产淫片| 五月天丁香视频 | 午夜视频免费在线观看 | 亚洲男男gaygayxxxgv | 日韩在线大片 | 91中文字幕永久在线 | 麻豆精品在线 | 午夜免费福利视频 | 久久久久久久久久久久影院 | 国产精品久久久久久久av电影 | 亚洲在线a | 久久久久久网 | 91在线你懂的 | 五月婷婷导航 | 成人黄大片 | 狠狠色丁香婷婷综合视频 | 少妇超碰在线 | 一区二区三区高清在线观看 | 精品福利视频在线观看 | 九九热免费在线观看 | 国产精品久久久久久久久久久久 | 日韩大片在线播放 | 欧美激情另类 | 麻豆91精品视频 | 国产一区二区手机在线观看 | 成年人视频免费在线播放 | 国产又粗又长的视频 | 高潮久久久 | 精品自拍sae8—视频 | 国产一区视频导航 | 国产香蕉久久 | 在线看片一区 | 欧美另类xxx | 欧美另类z0zx | 午夜国产福利在线 | 成人欧美一区二区三区黑人麻豆 | 韩国av免费观看 | 国产一级视屏 | 99免费观看视频 | 欧美日韩啪啪 | 国产69精品久久99不卡的观看体验 | 久久国产热 | 亚洲精品99久久久久中文字幕 | 一级欧美黄 | 国产精品美女久久久久aⅴ 干干夜夜 | a在线观看国产 | 国产精品综合av一区二区国产馆 | 精品久久久久久久久久岛国gif | 日日碰夜夜爽 | 久久99精品波多结衣一区 | 91免费观看视频在线 | 在线国产视频一区 | 亚洲激情久久 | 日韩在线观看三区 | av视屏在线 | 中文字幕视频网 | 国产视频1| 久久久久久久久久电影 | 在线观看亚洲电影 | 久久综合中文字幕 | 91视频观看免费 | 黄色大全视频 | 99久久综合国产精品二区 | 香蕉色综合 | 91精品免费 | 天天插狠狠干 | 三上悠亚一区二区在线观看 | 成人在线电影观看 | 91一区啪爱嗯打偷拍欧美 | 中文字幕永久 | 成人av播放 | 久久久99久久 | 国产91亚洲 | 一区二区视 | 国产成人久久久77777 | 草免费视频 | 久久草在线精品 | 天天爱综合 | 亚州天堂 | www.色五月.com | 日韩欧美在线观看 | 成人欧美一区二区三区在线观看 | 天天操天天艹 | 国产精品视频99 | 亚洲国产一区在线观看 | 日韩一区二区三区高清在线观看 | 91麻豆精品91久久久久同性 | 欧美一区三区四区 | 欧美色图88 | 国产中文欧美日韩在线 | 亚州精品在线视频 | 国产成人精品综合久久久久99 | 日韩av女优视频 | 91麻豆精品国产91久久久久久久久 | 国产精品第一视频 | 欧美analxxxx | 2018亚洲男人天堂 | 国产精品第三页 | 欧美极品xxxxx | 97碰碰视频 | 射久久久 | 欧美精品免费视频 | 欧美一区二区在线免费看 | 精品久久久精品 | 亚洲日本欧美 | 热精品| a在线观看免费视频 | 香蕉视频在线观看免费 | 又黄又爽又色无遮挡免费 | 久久艹国产视频 | 中文字幕在线中文 | 久久综合导航 | 色综合天天综合 | 国产xvideos免费视频播放 | 亚洲精品影院在线观看 | 久久精品91久久久久久再现 | 国产理论影院 | 国产精品9999久久久久仙踪林 | 国产精品一区二区在线 | 免费在线观看成人小视频 | 成人影片在线播放 | 韩日精品在线 | 在线天堂日本 | 亚洲国产剧情av | 四虎影视欧美 | 国产精品一区二区免费在线观看 | 黄色大片日本免费大片 | 欧美极品在线播放 | 色综合www| 91九色视频导航 | 一区二区视频电影在线观看 | 天躁狠狠躁| 欧美一区二区三区特黄 | 91爱爱视频 | 丁五月婷婷| 91在线观看视频网站 | 国产福利在线免费 | 亚洲 欧美变态 另类 综合 | 久久久久国产成人免费精品免费 | 美腿丝袜av | 人人舔人人 | 久久色视频 | 成人在线黄色 | 特级毛片在线 | 久久 亚洲视频 | 国产精品久久久久久久久岛 | 国产精品igao视频网网址 | 开心色婷婷 | 在线国产激情视频 | 国产成人综合图片 | 99热99热| 成人高清在线观看 | 丁香高清视频在线看看 | japanese黑人亚洲人4k | 国产精品欧美久久久久久 | 国产又粗又猛又黄 | 亚洲精品久久久蜜臀下载官网 | 日韩精品视| 91爱在线| 国产xvideos免费视频播放 | av 一区二区三区四区 | 国产乱老熟视频网88av | www久久精品 | 亚洲人成在线观看 | 亚洲精品国内 | 在线观看亚洲免费视频 | 国产视频日本 | 亚洲欧美999 | 欧美日韩调教 | 不卡的av电影在线观看 | 欧美精品国产综合久久 | 天天综合成人 | 成人精品影视 | 91九色在线视频 | 精品视频久久久 | 国产高清精品在线 | 成 人 黄 色视频免费播放 | 久久久久久久久久久久国产精品 | 日韩欧美在线一区二区 | 在线观看视频97 | 欧美精彩视频在线观看 | 免费国产在线精品 | 亚洲最大成人免费网站 | 深夜免费福利网站 | 91av社区| 日韩视频在线不卡 | 91在线porny国产在线看 | 久久精品这里热有精品 | 99亚洲精品 | 中文字幕国产视频 | 久久久久久高潮国产精品视 | 亚洲精品在线免费看 | 国产精品久久久久久五月尺 | 婷婷激情欧美 | 午夜国产福利视频 | 干狠狠 | 婷婷色社区 | 五月综合 | 美女精品网站 | 91精品国产麻豆国产自产影视 | 久久在线精品 | 九九天堂| 亚洲欧洲精品一区二区 | av爱干| 精品久久视频 | 欧美色图88| 又黄又爽的免费高潮视频 | 免费能看的黄色片 | 91精品天码美女少妇 | 天天拍天天爽 | 91精品一区二区三区蜜桃 | 天天操福利视频 | 视频二区 | 日韩a免费 | 亚洲国产中文字幕在线观看 | 日韩av三区| 91av电影在线观看 | 亚洲精品456在线播放 | 免费国产一区二区 | 日韩一区二区三区高清在线观看 | 亚洲精品国产精品久久99热 | 日本不卡123区 | 日韩在线视频看看 | 久久免费视频国产 | 91爱爱中文字幕 | 久久男人影院 | 日韩专区 在线 | 欧美一区二区在线免费看 | 特级黄录像视频 | 久久国产精品一国产精品 | 在线天堂视频 | 亚洲高清久久久 | 国产精品毛片久久久久久久久久99999999 | 久久在线观看 | 亚洲国产小视频在线观看 | 国产伦精品一区二区三区… | 黄色在线观看污 | 亚洲日韩中文字幕 | 国产精品电影一区二区 | 最近中文字幕免费观看 | 欧美91精品| 综合天天色 | 久久国产精品免费一区 | 久久av黄色| 少妇精69xxtheporn | bayu135国产精品视频 | 中文视频一区二区 | 国产高清免费在线观看 | 国产精品美女视频 | 日韩激情久久 | 日韩久久精品一区 | 国产成人亚洲在线观看 | 久久欧洲视频 | 99人久久精品视频最新地址 | 国产一线二线三线性视频 | 免费成人短视频 | 亚洲日本一区二区在线 | 国产在线高清 | 爱射综合 | 精品国产观看 | 日韩精品中文字幕av | 色综合天天做天天爱 | 国产精品久久久久四虎 | 欧美极品xxx | 18女毛片 | 973理论片235影院9 | 国产精品一区二区三区在线播放 | 亚洲精品高清视频在线观看 | 欧美地下肉体性派对 | 国产亚洲精品久久久网站好莱 | 日韩乱码中文字幕 | 依人成人综合网 | 高清一区二区三区 | 色在线免费视频 | 中文字幕在线视频一区二区 | 99久久久成人国产精品 | 久草视频手机在线 | 久久免费观看少妇a级毛片 久久久久成人免费 | 欧美资源在线观看 | 福利网在线 | 午夜视频不卡 | 久久er99热精品一区二区 | 国产精品久久久久久久久毛片 | 久久亚洲免费视频 | 日韩欧美一区二区三区在线观看 | 日本精品一区二区三区在线观看 | 国产成人av免费在线观看 | 久久亚洲综合国产精品99麻豆的功能介绍 | 中文日韩在线视频 | 亚洲欧美日韩精品一区二区 | 精品视频在线播放 | 在线天堂中文在线资源网 | 免费高清在线观看成人 | 久色婷婷 | 五月婷婷丁香综合 | 免费在线国产视频 | 91亚洲国产成人久久精品网站 | 色天堂在线视频 | 国产一区二区在线免费 | 免费观看黄色av | 国产91粉嫩白浆在线观看 | 亚洲日本va午夜在线电影 | 久久人网 | 日本少妇视频 | 国产精品毛片一区二区 | 国产成人免费观看 | 91毛片在线| 最近日本韩国中文字幕 | 欧美伊人网 | 国产欧美综合在线观看 | 一区二区高清在线 | 人人躁 | 精品福利视频在线 | 中文在线a在线 | 成人日韩av| 丰满少妇对白在线偷拍 | 91精品在线免费视频 | 久久99亚洲精品久久 | 国产视频一区在线播放 | 91视频高清 | 欧美孕妇与黑人孕交 | 日韩欧美专区 | 国产视频精品视频 | 欧美性生活大片 | 国产精品av久久久久久无 | 亚洲精品国产电影 | 国产精品私人影院 | 成人黄色大片在线免费观看 | 成人四虎 | 日韩视频在线不卡 | 97国产大学生情侣酒店的特点 | 国精产品一二三线999 | 欧美日韩免费在线观看视频 | 日韩美视频| 色中色亚洲 | 久久视频 | 99在线观看视频网站 | 最近最新mv字幕免费观看 | 日韩视 | 国产视频一区在线 | 成人黄色资源 | 免费 在线 中文 日本 | 激情视频免费在线 | 九九亚洲精品 | 日韩美在线 | 毛片一区二区 | 综合久久影院 | 九九综合久久 | 91精品国产成人观看 | 中文字幕精品一区 | 999久久国产精品免费观看网站 | 免费亚洲视频在线观看 | 婷婷久久一区二区三区 | 国产成人精品一区二区三区福利 | 91天天视频| 日韩簧片在线观看 | 婷婷九月激情 | 亚洲欧美成人网 | 日日操操| 狠狠插天天干 | 最近最新mv字幕免费观看 | 国产性xxxx| 曰韩精品 | 欧美激情精品一区 | 国产精品美女999 | 国产欧美久久久精品影院 | 丁香5月婷婷久久 | 伊人狠狠色丁香婷婷综合 | 成人avav | 亚洲激情影院 | 99亚洲天堂 | 日日干夜夜干 | 日本护士三级少妇三级999 | 日本精品视频在线播放 | 免费观看一级 | 国产国语在线 | 久热免费在线观看 | 91av在线播放视频 | 日韩中字在线观看 | 啪啪肉肉污av国网站 | 五月天视频网 | 精品国产综合区久久久久久 | 成人免费xxx在线观看 | www.五月婷婷.com | 99精品在这里 | 一区二区三区动漫 | 日本不卡一区二区三区在线观看 | 久久亚洲二区 | 国产一级免费电影 | 中文字幕乱码一区二区 | 激情久久五月 | 国产麻豆精品一区 | 色先锋资源网 | 九九99 | 精品一区精品二区 | 亚洲精品国产精品乱码不99热 | 中文字幕二区在线观看 | 天堂va在线观看 | 99在线热播| 97超碰人人澡人人爱 | 91中文字幕在线观看 | 国产精品情侣视频 | 国产成人三级一区二区在线观看一 | 黄在线免费观看 | 免费黄色激情视频 | 在线国产激情视频 | 我要色综合天天 | japanese黑人亚洲人4k | 亚洲午夜精品久久久久久久久久久久 | 91精品秘密在线观看 | 久久婷婷五月综合色丁香 | 亚洲精品自在在线观看 | 日韩欧美综合精品 | 欧美一二三区播放 | 九九免费精品 | 国产91精品一区二区麻豆网站 | 天天精品视频 | 日韩字幕 | 婷婷午夜激情 | 欧美俄罗斯性视频 | 中文字幕视频免费观看 | 久久精品成人欧美大片古装 | 久久久久在线 | 欧美性受极品xxxx喷水 | 丝袜av网站 | 国产精品一区二区三区在线 | 狠狠色噜噜狠狠狠狠2021天天 | 欧美日韩高清一区 | 在线日韩三级 | 亚洲成人高清在线 | 一本一道久久a久久精品蜜桃 | 久草精品在线观看 | 免费av福利| 午夜精品麻豆 | 99国产精品久久久久久久久久 | 中文av日韩 | 在线性视频日韩欧美 | 伊人狠狠色 | 永久免费视频国产 | 天天操综合 | 国产中文字幕一区二区三区 | aaa免费毛片 | 亚洲欧美日韩一区二区三区在线观看 | 日韩午夜一级片 | a天堂最新版中文在线地址 久久99久久精品国产 | 视频二区在线 | 色av资源网 | 碰超人人| 亚洲 中文 在线 精品 | 亚洲综合在线五月天 | 99久久精品无码一区二区毛片 | 久久久综合精品 | 亚洲精品国产精品国自 | 色综合久久88色综合天天6 | 天天摸天天操天天舔 | 91在线一区二区 | 色姑娘综合网 | 国内揄拍国产精品 | 国产欧美精品在线观看 | 国产视频一二区 | 国产在线精品播放 | 一区中文字幕电影 | 久草网在线观看 | 久久免费精品一区二区三区 | 亚洲欧美成人在线 | 激情五月婷婷综合 | 97人人澡人人爽人人模亚洲 | 精品国产一区二区三区四 | 久久精品香蕉视频 | 国产精品亚州 | 香蕉视频免费看 | 91人人人 | 97超碰站 | 热99在线视频 | 又湿又紧又大又爽a视频国产 | 日韩在线影视 | 在线视频一二三 | 蜜臀av夜夜澡人人爽人人 | 欧美午夜a| 国产精品久久久久9999吃药 | 亚洲综合干 | 婷婷六月综合亚洲 | 成年人免费av网站 | 粉嫩av一区二区三区四区五区 | 91成人网在线观看 | 日本在线观看一区二区 | av噜噜噜在线播放 | 国产99久久九九精品免费 | 男女激情免费网站 | 日韩欧美综合在线视频 | 丁香视频 |