国产秋霞理论久久久电影-婷婷色九月综合激情丁香-欧美在线观看乱妇视频-精品国avA久久久久久久-国产乱码精品一区二区三区亚洲人-欧美熟妇一区二区三区蜜桃视频

原生JavaScript靈魂拷問,你能答上多少

共 9536字,需瀏覽 20分鐘

 ·

2022-01-14 11:01


大廠技術(shù)??高級(jí)前端??Node進(jìn)階

點(diǎn)擊上方?程序員成長指北,關(guān)注公眾號(hào)

回復(fù)1,加入高級(jí)Node交流群

前言

當(dāng)下的前端開發(fā),三大框架三分天下,框架的簡單、強(qiáng)大讓我們欲罷不能,使用原生 JavaScript 越來越少。

但我認(rèn)為 JavaScript 作為每一個(gè)前端工程師的立身之本,不止要學(xué)會(huì),還要學(xué)好、學(xué)精,學(xué)再多遍都不為過。

另一方面,前端面試中,越來越重視原生 JavaScript 的考察,其所占比例也越來越高。

我抓取了??蜕辖衲甑木€上面試題和面經(jīng),大約 500 左右道題,原生 JavaScript 的難點(diǎn)(閉包,eventLoop,this,手撕原生JS)考察的頻率非常高。

完整的分析我還正在趕工中,希望大家到時(shí)候可以來支持一下。

因此我決定整理JavaScript中容易忽視或者混淆的知識(shí)點(diǎn),寫一系列篇文章,以靈魂拷問的方式,系統(tǒng)且完整的帶大家遨游原生 JavaScript 的世界,希望能給大家?guī)硪恍┦斋@。

JS類型之問——概念與檢測篇

1.JS中的數(shù)據(jù)類型有哪些?

  1. 基本數(shù)據(jù)類型:共有7種
Boolean?Number?String?undefined?null?Bigint?Symbol
復(fù)制代碼

SymbolES6 引入的一種新的原始值,表示獨(dú)一無二的值,主要為了解決屬性名沖突問題。

BigintES2020 新增加,是比 Number 類型的整數(shù)范圍更大。

  1. 引用數(shù)據(jù)類型:1種
Object對象(包括普通ObjectFunction、Array、Date、RegExp、Math)
復(fù)制代碼

2.你真的懂typeof嗎?

  1. typeof的作用?

    區(qū)分?jǐn)?shù)據(jù)類型,可以返回7種數(shù)據(jù)類型:number、string、boolean、undefined、object、function ,以及 ES6 新增的 symbol

  2. typeof 能正確區(qū)分?jǐn)?shù)據(jù)類型嗎?

    不能。對于原始類型,除 null 都可以正確判斷;對于引用類型,除 function 外,都會(huì)返回 "object"

  3. typeof 注意事項(xiàng)

    • typeof 返回值為 string 格式,注意類似這種考題: typeof(typeof(undefined)) -> "string"
    • typeof 未定義的變量不會(huì)報(bào)錯(cuò),返回 "undefiend"
    • typeof(null) -> "object": 遺留已久的 bug
    • typeof無法區(qū)別數(shù)組與普通對象: typeof([]) -> "object"
    • typeof(NaN) -> "number"
  4. 習(xí)題

console.log(typeof(b));
console.log(typeof(undefined));?
console.log(typeof(NaN));?
console.log(typeof(null));?
var?a?=?'123abc';?
console.log(typeof(+a));?
console.log(typeof(!!a));?
console.log(typeof(a?+?""));?
console.log(typeof(typeof(null)));
console.log(typeof(typeof({})));
復(fù)制代碼

答案

undefined?//?b未定義,返回undefined
undefined
number?//?NaN?為number類型
object
number?//?+a?類型轉(zhuǎn)換為NaN
boolean
string
string?//?typeof(null)?->?"object";?typeof("object")?->?"string"
string
復(fù)制代碼

3.什么是instanceof?你能模擬實(shí)現(xiàn)一個(gè)instanceof嗎?

  1. `instanceof` 判斷對象的原型鏈上是否存在構(gòu)造函數(shù)的原型。只能判斷引用類型。
  2. `instanceof` 常用來判斷 `A` 是否為 `B` 的實(shí)例
//?A是B的實(shí)例,返回true,否則返回false
//?判斷A的原型鏈上是否有B的原型
A?instaceof?B
復(fù)制代碼
  1. 模擬實(shí)現(xiàn) instanceof

思想:沿原型鏈往上查找

function?instance_of(Case,?Constructor)?{
????//?基本數(shù)據(jù)類型返回false
????//?兼容一下函數(shù)對象
????if?((typeof(Case)?!=?'object'?&&?typeof(Case)?!=?'function')?||?Case?==?'null')?return?false;
????let?CaseProto?=?Object.getPrototypeOf(Case);
????while?(true)?{
????????//?查到原型鏈頂端,仍未查到,返回false
????????if?(CaseProto?==?null)?return?false;
????????//?找到相同的原型
????????if?(CaseProto?===?Constructor.prototype)?return?true;
????????CaseProto?=?Object.getPrototypeOf(CaseProto);
????}
}
復(fù)制代碼

測試:

console.log(instance_of(Array,?Object))?//?true
function?User(name){
????this.name?=?name;
}
const?user?=?new?User('zc');
const?vipUser?=?Object.create(user);
console.log(instance_of(vipUser,?User))?//?true
復(fù)制代碼

4.如何區(qū)分?jǐn)?shù)組與對象?使用instanceof判斷數(shù)組可靠嗎?

  1. `ES6` 提供的新方法 `Array.isArray()`
  2. 如果不存在`Array.isArray()`呢?可以借助`Object.prototype.toString.call()` 進(jìn)行判斷,此方式兼容性最好
if?(!Array.isArray)?{
????Array.isArray?=?function(o)?{
????????return?typeof(o)?===?'object'?
???????????????&&?Object.prototype.toString.call(o)?===?'[object?Array]';
????}
}
復(fù)制代碼
  1. instanceof 判斷

判斷方式

//?如果為true,則arr為數(shù)組
arr?instanceof?Array
復(fù)制代碼

instanceof 判斷數(shù)組類型如此之簡單,為何不推薦使用那?

instanceof 操作符的問題在于,如果網(wǎng)頁中存在多個(gè) iframe ,那便會(huì)存在多個(gè) Array 構(gòu)造函數(shù),此時(shí)判斷是否是數(shù)組會(huì)存在問題。

更詳細(xì)的內(nèi)容可以參考博文:JavaScript為啥不用instanceof檢測數(shù)組[4]

5.如何判斷一個(gè)數(shù)是否為NaN?

NaN 有個(gè)非常特殊的特性, NaN 與任何值都不相等,包括它自身

NaN?===?NaN?//?false
NaN?==?NaN?//?false
復(fù)制代碼

鑒于這個(gè)獨(dú)特的特性,可以手撕一個(gè)比較簡單的判斷函數(shù)

function?isNaN(x)?{
????return?x?!=?x;
}
復(fù)制代碼
  • 全局函數(shù) isNaN 方法:不推薦使用。MDN 對它的介紹是:isNaN 函數(shù)內(nèi)包含一些非常有趣的規(guī)則。

但為了避免一些面試官出一些冷門題目,咱們來稍微了解一下 isNaN 的有趣機(jī)制:會(huì)先判斷參數(shù)是不是 Number 類型,如果不是 Number 類型會(huì)嘗試將這個(gè)參數(shù)轉(zhuǎn)換為 Number 類型,之后再去判斷是不是 NaN

舉個(gè)例子:

//?為什么對象會(huì)帶來三種不同的結(jié)果
//?是不是很有趣
//?具體原因可以參考類型轉(zhuǎn)換篇
console.log(isNaN([]))?//?false
console.log(isNaN([1]))?//?false
console.log(isNaN([1,?2]))?//?true?
console.log(isNaN(null))?//?false
console.log(isNaN(undefined))?//?true
復(fù)制代碼

isNaN 的結(jié)果很大程度上取決于 Number() 類型轉(zhuǎn)換的結(jié)果,關(guān)于 Number 的轉(zhuǎn)換結(jié)果,后面會(huì)專門有一部分來介紹。

  • Number.isNaN (推薦使用)

isNaN() 相比,Number.isNaN() 不會(huì)自行將參數(shù)轉(zhuǎn)換成數(shù)字,只有在參數(shù)是值為 NaN 的數(shù)字時(shí),才會(huì)返回 true。

6.如何實(shí)現(xiàn)一個(gè)功能完善的類型判斷函數(shù)?

Object.prototype.toString.call([value]) ,可以精準(zhǔn)判斷數(shù)據(jù)類型,因此可以根據(jù)這個(gè)原理封裝一個(gè)自己的 type 方法。

toString.call(()=>{})???????//?[object?Function]
toString.call({})???????????//?[object?Object]
toString.call([])???????????//?[object?Array]
toString.call('')???????????//?[object?String]
toString.call(22)???????????//?[object?Number]
toString.call(undefined)????//?[object?undefined]
toString.call(null)?????????//?[object?null]
toString.call(new?Date)?????//?[object?Date]
toString.call(Math)?????????//?[object?Math]
toString.call(window)???????//?[object?Window]
復(fù)制代碼

JS類型之問——類型轉(zhuǎn)換篇

7.toString 和 valueOf 方法有什么區(qū)別?

  1. 基礎(chǔ):這兩個(gè)方法屬于 Object 對象,是為了解決 JavaScript 值運(yùn)算與顯示的問題。為了更適合自身功能,很多 JavaScript 內(nèi)置對象都重寫了這兩個(gè)方法。
  2. toString(): 返回當(dāng)前對象的字符串形式;valueOf() : 返回該對象的原始值
  3. 各個(gè)類型下兩個(gè)方法返回值情況對比
類型valueOftoString
Array[1,2,3]數(shù)組本身[1, 2, 3]1,2,3
Object對象本身[object Object]
Boolean類型Boolean值"true"或"false"
Function函數(shù)本身function fnName(){code}
Number數(shù)值數(shù)值的字符換表示
Date毫米格式時(shí)間戳GMT格式時(shí)間字符串
  1. 調(diào)用優(yōu)先級(jí)

    隱式轉(zhuǎn)換時(shí)會(huì)自動(dòng)調(diào)用 toStringvalueOf 方法,兩者優(yōu)先級(jí)如下:

    • 強(qiáng)制轉(zhuǎn)化為字符串類型時(shí),優(yōu)先調(diào)用 toString 方法
    • 強(qiáng)制轉(zhuǎn)換為數(shù)值類型時(shí),優(yōu)先調(diào)用 valueOf 方法
    • 使用運(yùn)算符操作符情況下,valueOf 優(yōu)先級(jí)高于 toStirng
    • 對象的類型轉(zhuǎn)換見下一問。

8.你知道對象轉(zhuǎn)換成原始值是什么流程嗎 (ToPrimitive)?

對象轉(zhuǎn)換成原始類型,會(huì)調(diào)用內(nèi)置的 [ToPrimitive]函數(shù)

(參考博客: 從ECMA規(guī)范徹底理解 JavaScript 類型轉(zhuǎn)換[5])

  • ToPrimitive 方法接受兩個(gè)參數(shù),一個(gè)是輸入的值 input,一個(gè)是期望轉(zhuǎn)換的類型 PreferredType
    1. 如果未傳入 PreferredType 參數(shù),讓 hint 等于 'default',后面會(huì)將 hint 修改為 'number'
    2. 如果 PreferredTypehint String,讓 hint 等于 'string'
    3. 如果 PreferredTypehint Number,讓 hint 等于 'number'
    4. 返回 OrdinaryToPrimitive(input, hint)
  • OrdinaryToPrimitive(input, hint)
    1. 如果 hint'string',那么就將 methodNames 設(shè)置為 toString、valueOf
    2. 如果 hint'number',那么就將 methodNames 設(shè)置為 valueOf、toString

methodName 存儲(chǔ)的就是當(dāng)前 preferredType 下的調(diào)用優(yōu)先級(jí),如果全部調(diào)用完畢仍然未轉(zhuǎn)化為原始值,會(huì)發(fā)生報(bào)錯(cuò)。

9.你能做出下面這個(gè)題嗎?

const?a?=?{x:1};
const?b?=?{x:2};
const?obj?=?{};
obj[a]?=?100;
obj[b]?=?200;

console.log(obj[a]);
console.log(obj[b]);
復(fù)制代碼

有了第七問和第八問的知識(shí),這個(gè)題目就不難了。JavaScript 對象的鍵必須是字符串,因此分別需要將對象 ab 轉(zhuǎn)換為 string 類型。具體轉(zhuǎn)換流程:

//?1.執(zhí)行ToPrimitive
//?hint?為?string
ToPrimitive(a,?'hint?String')
//?2.執(zhí)行OrdinaryToPrimitive
OrdinaryToPrimitive(a,?'string')
//?3.返回methodNames
methodNames?=?['toString',?'valueOf']
//?4.調(diào)用methodNames里方法
//?調(diào)用toString
a.toString()?//?返回[object?Object]
復(fù)制代碼

對象 ab 轉(zhuǎn)換后的結(jié)果都是 [object Object]obj 對象上只添加了一個(gè)屬性 [object Object]。

答案

200
200
復(fù)制代碼

10.你能理清類型轉(zhuǎn)換嗎?

首先需要知道:在JavaScript中,只有三種類型的轉(zhuǎn)換

  • 轉(zhuǎn)換為Number類型: Number() / parseFloat() / parseInt()
  • 轉(zhuǎn)化為String類型: String() / toString()
  • 轉(zhuǎn)化為Boolean類型: Boolean()

因此遇到類型轉(zhuǎn)換問題,只需要弄清楚在什么場景之下轉(zhuǎn)換成那種類型即可。

轉(zhuǎn)換為boolean

  • 顯式:Boolean 方法可以顯式將值轉(zhuǎn)換為布爾類型
  • 隱式:通常在邏輯判斷或者有邏輯運(yùn)算符時(shí)觸發(fā)(|| && !
Boolean(1)???//?顯式類型轉(zhuǎn)換
if?(1)?{}????//?邏輯判斷類型觸發(fā)隱式轉(zhuǎn)換
!!1??????????//?邏輯運(yùn)算符觸發(fā)隱式轉(zhuǎn)換
1?||?'hello'?//?邏輯運(yùn)算符觸發(fā)隱式轉(zhuǎn)換
復(fù)制代碼

boolean 類型只有 truefalse 兩種值。

除值 0,-0,null,NaN,undefined,或空字符串("")false 外,其余全為 true

轉(zhuǎn)化為string

  • 顯式:String 方法可以顯式將值轉(zhuǎn)換為字符串
  • 隱式:+ 運(yùn)算符有一側(cè)操作數(shù)為 string 類型時(shí)

轉(zhuǎn)化為 string 類型的本質(zhì):需要轉(zhuǎn)換為string的部分調(diào)用自身的toString方法(null/undefined返回字符串格式的null和undefined)

當(dāng)被轉(zhuǎn)換值為對象時(shí),相當(dāng)于執(zhí)行 ToPrimitive(input, 'hint String')

String([1,2,3])?//?1,2,3
String({x:1})?//?[object?Object]

1?+?'1'?//?11
1?+?{}?//?1[object?Object]
復(fù)制代碼

轉(zhuǎn)化為number

  • 顯式:Number 方法可以顯式將值轉(zhuǎn)化為數(shù)字類型

Number 的具體規(guī)則,ES5 規(guī)范中給了一個(gè)對應(yīng)的結(jié)果表[6]

類型結(jié)果
undefinedNaN
null+0
BooleanNaN
undefined參數(shù)為true返回1;false返回+0
Number返回與之相等的值
String有些復(fù)雜,舉例說明
Object先執(zhí)行ToPrimitive方法,在執(zhí)行Number類型轉(zhuǎn)換
  1. `String`: 空字符串返回 `0`,出現(xiàn)任何一個(gè)非有效數(shù)字字符,返回 `NaN`
console.log(Number("1?3"))?//?NaN
console.log(Number("abc"))?//?NaN
console.log(Number("1a"))?//?NaN
console.log(Number("0x11"))?//?17
console.log(Number("123"))?//?123
console.log(Number("-123"))?//?-123
console.log(Number("1.2"))?//?1.2
復(fù)制代碼
  • 隱式:number的隱式類型轉(zhuǎn)換比較復(fù)雜,對需要隱式轉(zhuǎn)換的部分執(zhí)行 Number
    • 比較操作(<, >, <=, >=)
    • 按位操作(| & ^ ~)
    • 算數(shù)操作(+ - * / %) 注意:+的操作數(shù)存在字符串時(shí),為string轉(zhuǎn)換
    • 一元 +- 操作

11.== 的隱式轉(zhuǎn)換規(guī)則

  1. ==: 只需要值相等,無需類型相等;null, undefined== 下互相等且自身等
  2. == 的轉(zhuǎn)換規(guī)則:
被比較數(shù)B

比較數(shù)A
Number
String
Boolean
Object

在上面的表格中,ToNumber(A) 嘗試在比較前將參數(shù) A 轉(zhuǎn)換為數(shù)字。ToPrimitive(A) 將參數(shù) A 轉(zhuǎn)換為原始值( Primitive )。

12.1 + {}{} + 1的輸出結(jié)果分別是什么?

通過上面的學(xué)習(xí),當(dāng)對象與其他元素相加時(shí),對象會(huì)調(diào)用 toPrimitive 轉(zhuǎn)化為原始值:

  1. 執(zhí)行 toPrimitive,未傳入 PreferredType,methodNames[valueOf, toString]
  2. 執(zhí)行 ({}).valueOf,返回對象本身 {},不是原始值
  3. 繼續(xù)執(zhí)行 ({}).toString(),返回 "[object Object]",返回結(jié)果為原始值,轉(zhuǎn)換結(jié)束

此時(shí) 1 + {},右側(cè)為 string 類型,將 1 進(jìn)行 ToString() 轉(zhuǎn)化為 "1" ,最后字符串連接,結(jié)果為 "1[object Object]"

注意{} + 1 輸出的結(jié)果會(huì)和 1 + {} 一樣嗎?

{}JavaScript 中,不止可以作為對象定義,也可以作為代碼塊的定義。js 引擎會(huì)把 {} + 1 解析成1個(gè)代碼塊和1個(gè)+1,最終輸出結(jié)果為 1

答案

1[object?Object]
1
復(fù)制代碼

13.[]與{}的相加的結(jié)果是多少?

[] + {}

數(shù)組是特殊的對象,需要調(diào)用 toPrimitive,轉(zhuǎn)換為原始值

  • 執(zhí)行 toPrimitive,未傳入 PreferredType,methodNames[valueOf, toString]
  • 執(zhí)行 [].valueOf,返回?cái)?shù)組本身
  • 執(zhí)行 [].toString,返回空字符串 ''

空對象不做贅述。

答案

"[object?Object]"
復(fù)制代碼

[] + []

類似 1 兩個(gè)空數(shù)組都執(zhí)行 toPrimitive,返回兩個(gè)空字符串。

答案

""
復(fù)制代碼

{} + []

類似于 {} + 1,{} + [] 相當(dāng)于 {}; + [],一元 + 強(qiáng)制將 "" 隱式轉(zhuǎn)換為0,最終結(jié)果為0

答案

0
復(fù)制代碼

{} + {}

對于這個(gè)題,我先公布一下答案,之后說一下我的疑問。

答案

[object?Object][object?Object]
復(fù)制代碼

疑問

為什么 JavaScript 引擎沒有將前面的 {} 解釋成代碼塊?

友情提示:由于 {} 可以解釋為代碼塊的形式,有些需要注意的地方,舉個(gè)栗子:

  • 空對象調(diào)用方法時(shí):{}.toString() 會(huì)報(bào)錯(cuò)
  • 箭頭函數(shù)返回對象時(shí):let getTempItem = id => { id: id, name: "Temp" } 會(huì)報(bào)錯(cuò)

14.你能靈活運(yùn)用 parseInt 與 parseFloat 嗎

  1. `parseInt`:從數(shù)字類開始看,看到非數(shù)字類為止,返回原來的數(shù)。\(小數(shù)點(diǎn)也屬于非有效數(shù)字\)
parseInt('123x')?->?123
parseInt('-023x')?->?-23
parseInt('1.1')?->?1
parseInt('-abc')?->?NaN
parseInt('x123')?->?NaN
復(fù)制代碼
  1. parseInt(string, radix) 還有第二個(gè)參數(shù) radix 表示要解析數(shù)字的基數(shù),取值為 2~36 (默認(rèn)值為10)
  2. parseFloatparseInt 類似,只不過它返回浮點(diǎn)數(shù)。從數(shù)字類開始看,看到除了第一個(gè)點(diǎn)以外的非數(shù)字類為截止,返回前面的數(shù)。

網(wǎng)紅題:['1','2','3'].map(parseInt)

這個(gè)網(wǎng)紅題考察的就是 parseInt 有兩個(gè)參數(shù)。map 傳入的函數(shù)可執(zhí)行三個(gè)參數(shù):

//?ele???遍歷的元素
//?index?遍歷的元素索引
//?arr???數(shù)組
arr.map(function(ele,?index,?arr){})
復(fù)制代碼

['1','2','3'].map(parseInt)相當(dāng)于執(zhí)行了以下三次過程:

parseInt('1',?0,?['1','2','3'])
parseInt('2',?1,?['1','2','3'])
parseInt('3',?2,?['1','2','3'])
復(fù)制代碼
  • parseInt('1', 0, ['1','2','3']): radix為0時(shí),默認(rèn)取10,最后返回1
  • parseInt('2', 1, ['1','2','3']): radix取值為2~36,返回NaN
  • parseInt('3', 2, ['1','2','3']): radix取值為2,二進(jìn)制只包括0,1,返回NaN

15.如何讓 if(a == 1 && a == 2) 條件成立?

valueOf 的應(yīng)用

var?a?=?{
????value:?0,
????valueOf:?function()?{
????????this.value++;
????????return?this.value;
????}
};
console.log(a?==?1?&&?a?==?2);?//true
復(fù)制代碼


關(guān)于本文

作者:戰(zhàn)場小包

https://juejin.cn/post/7021750693262262308

最后

Node 社群


我組建了一個(gè)氛圍特別好的 Node.js 社群,里面有很多 Node.js小伙伴,如果你對Node.js學(xué)習(xí)感興趣的話(后續(xù)有計(jì)劃也可以),我們可以一起進(jìn)行Node.js相關(guān)的交流、學(xué)習(xí)、共建。下方加 考拉 好友回復(fù)「Node」即可。


???“分享、點(diǎn)贊、在看” 支持一波??

瀏覽 53
點(diǎn)贊
評論
收藏
分享

手機(jī)掃一掃分享

分享
舉報(bào)
評論
圖片
表情
推薦
點(diǎn)贊
評論
收藏
分享

手機(jī)掃一掃分享

分享
舉報(bào)

感谢您访问我们的网站,您可能还对以下资源感兴趣:

国产秋霞理论久久久电影-婷婷色九月综合激情丁香-欧美在线观看乱妇视频-精品国avA久久久久久久-国产乱码精品一区二区三区亚洲人-欧美熟妇一区二区三区蜜桃视频 强伦轩一区二区三区四区播放方式| 人人操人人干人人| 日韩无码精品视频| 国产成人精品电影| 思思热思思操| 一本一道久久综合| 亚洲免费在线看| 在线免费无码| 国产成人无码一区二区| 亚洲色欲av| 日本黄色大片网站| 狼人香蕉在线视频| 成人三级电影| 春色av| 在线免费观看无码视频| 日韩在线成人中文字幕亚洲| 吴梦梦一区二区在线观看| 午夜国产视频| 极品无码| 九九九免费| 99国产精品久久久久久久成人| 亚洲无码一区二区三区妃光 | 免费看毛片网站| 国产黄色在线看| 一级片黄色免费| 91久久婷婷国产麻豆精品电影.co| 韩日一区二区| 日日爽| 我想看操逼| 国产剧情一区二区| 国产女人精品视频| 久艹| 日韩一级一级| 蜜桃av在线播放| 体内射精视频| 日韩精品成人免费观看视频| 操碰在线观看| 色图插插插| 91外围女视频| 51乱伦| 少妇毛片| 国产一区二区三区视频在线观看| 日韩三级AV| 成人黄色无码视频| 在线h网站| AV资源网站在线| 佳佳女王footjob超级爽| 午夜天堂精品久久久久| 亚洲欧美在线播放| 欧美成人手机在线| 再深点好爽灬轻点久久国产| 国产九九热视频| 欧美性xxxxx| 国产卡一卡二在线观看| 日本三级片视频不卡| 欧美久久久| 大荫蒂HD大荫蒂视频| 2025av天堂网| 围产精品久久久久久久| 日韩精品无码电影| 亚洲AV日韩AV永久无码网站| 大香蕉精品视频在线| 最近中文字幕mv第三季歌词| 激情深爱五月| 日韩成人黄片| 黄片日逼视频| 大香蕉伊人综合在线| 色呦呦视频| 秋霞网一区二区| 国产精品久久久久久亚洲毛片| 黄色视频在线观看18| 国产三级片网址| 日本成人黄色视频| 91人人妻人人澡| 色色色色五月天| 天天免费视频| 国产精品婷婷久久久| 人人天天爽| 国产成人精品无码片子的价格| 一级片在线免费看| 亚洲最新AV在线| 久久久久久成人无码| 亚洲Japanese办公室制服 | 中文字幕免费中文| 狠狠色一区| 黄网站在线观看| 亚洲国产91| 免费日逼| 亚洲免费高清视频| 涩久久| 国产精品一区二| 欧美人妻激情| 爱操逼网| 18av在线观看| 成人小视频18| 日本久久综合| 国产精品1区2区| 久久久91精品国产一区苍井空| 一道本无码在线播放| 大香蕉尹人在线观看| 一插菊花综合视频| 91污视频在线观看| 蜜桃久久av一区| 国产精品无码免费| 欧洲成人在线| 精品网站| 久久精品国产精品| 国产精品aaa| 国产日韩在线观看视频| 91免费福利视频| 国产无码AV大片| 欧美男人的天堂| 亚洲AV高清无码| 亚洲日韩免费观看| 五月婷婷激情综合| 一级特黄AA片| 美女乱伦| 久久这里只有精品99| 天天综合网久久综合网| 亚洲欧洲日韩| 69国产| 亚洲毛片视频| 在线观看你懂得| 大鸡吧在线视频| 91探花在线观看| 99久久99九九九99九他书对| 特级西西444www高清大胆免费看| 国产一区二区三区在线观看免费视频免费视频免费视频 | 一区二区三区四区无码视频| 婷婷无码在线| 91人人精品| 日韩啊啊啊| 性福利导航| 少妇搡BBBB搡BBB搡HD(| 黄色视频网站在线看| 天堂va欧美va亚洲va在线| 国产精品久久久999| 操逼操123| 中文字幕久热| 人人操人人摸人人爱| 国内精品卡一卡二卡三| 国产91福利| 操B影院| 成人视频网站在线观看18| 国产成人AV一区二区三区在线观看| 成人网站在线免费观看| 视频一区二区三区免费| 少妇厨房愉情理伦BD在线观看| 国产1区在线观看| 欧美三级视频在线观看| 夜夜骑天天| a视频免费看| 9久久精品| 成人免费三级| 人妻无码不卡| 91视频免费播放| 久久久亚洲无码精品| 久操视频在线免费观看| 免费在线成人网站| 91在线网站| 亚洲日韩在线播放| 91丨九色丨蝌蚪丨肥女| 9991区二区三区四区| 日韩三级AV| 国产精品H| 久久麻豆| 日韩AV免费看| 免费播放婬乱男女婬视频国产| 欧美一级A片免费看视频小说| 亚洲精品成人无码毛片| 可以免费看的av| 成人黄色一级片| 亚洲中文字幕网| 欧美综合网| 尹人香蕉久久| 91高清国产| 精品一区二区三区四区五区六区七区八区九区| 天堂在线9| 五月婷婷婷婷| 日韩成人黄色电影| 黄网免费在线观看| av免费网站| 99久热在线精品视频| 久久动图| 国产一级a爱做片免费☆观看| www.五月丁香| 麻豆网站91| 日本人妻在线播放| 人妻少妇被猛烈进入中文字幕| 欧美成人精品一区二区三区| 亚洲中文字幕在线无码| 免费A级黄片| 91精品无码一区二区| 日韩在线视频91| 国产黄色在线播放| 成人精品无码| 一级片黄色电影| A视频免费| 影音先锋男人网| av无码免费观看| 高清日韩无码视频| 久久免费精品视频| 亚洲无线观看| 亚洲,制服,综合,中文| 99reav| 成人精品一区二区三区视频| 伊人久久AV诱惑悠悠| 三级片韩国AV| 激情五月丁香花| 亚洲AV成人片色在线观看高潮| 亚洲AV综合网| 婷婷五月天网址| 中文字幕日韩欧美| 无码AV高清| 高清无码视频免费版本在线观看 | 蜜桃Av噜噜一区二区三区| 91熟女丰满原味| 欧美大鸡巴视频| 秋霞中文字幕| 91九色TS另类国产人妖| 日韩毛| 色老板亚洲| 色五月在线观看| 18精品爽国产冫绿帽社| 91看片看婬黄大片女跟女| 超碰成人在线免费观看| 成年人黄色视频网站| 豆花视频在线免费观看| 久久久久久婷婷| 成人大片在线观看| 第一福利视频导航| 亚洲一区二区黄色电影视频网站 | 亚洲熟妇无码| 欧美成人黄色电影| 按摩性高湖婬AAA片A片中国| 国产高清无码福利| 国产精品无码av| 91工厂露脸熟女| 超碰在线进入| 午夜视频网站| 日韩av在线免费观看| 97精品在线| 大香蕉婷婷五月天| 黄色中文字幕| 97国产精品人人爽人人做| 嫩BBB槡BBBB槡BBBB视频-百度 | 狠狠的操| 99久久国内精品成人免费| 毛片9| 亚洲欧美久久久| 中文字幕高清在线| 最新中文字幕在线观看| 黄色三极片| 性爱日韩| 日韩免费网站| 成人午夜精品福利免费| 草b在线| 亚洲一区三区| 91精品久久人妻一区二区夜夜夜| 国产美女久久久| 国产主播中文字幕| 日韩少妇AV| 色噜噜一区二区| 色婷婷俺来也| 五月天国产视频| 精品久久无码| 日本高清视频免费观看| 91av免费在线观看| 中文字幕第69页| 人妻丰满熟妇av无码区| 黄片网站免费观看| 免费看黄色A片| 二区三区免费视频| 国产中文字幕在线播放| 日韩精品毛片一区二区视频免费| 9久9久9久9久女女女女| 日韩国产高清无码| 男人的天堂av网站| 免费视频A| 午夜免费视频1000| 色色com| 北条麻妃一区二区三区在线观看| 三级高清无码视频| 日韩久久网站| 亚洲欧美日本在线观看| 69成人精品国产| 中文字幕无码不卡| 刘玥91精一区二区三区| AV黄片| 中国极品少妇XXX| 亚洲男人天堂视频| 深爱婷婷| 国产波霸爆乳一区二区| 激情伊人| 热久久免费视频| 在线一区观看| 成人网站毛片| 伊人狼人香蕉| 伊人久久精品| 一级A黄色片| av在线资源网站| 亚洲A片一区二区三区电影网 | 婷婷五月丁香五月| AV观看免费| 麻豆911| 北条麻妃无码视频| 欧美在线视频a| 91免费福利| 综合插插| 九九综合伊人7777777| 国产熟妇| 日韩做爱网站| 色婷婷色99国产综合精品| 国产又爽又黄视频| 国产av资源网| 午夜伊人| 日韩香蕉网| 天天插天天射| 国产欧美一区二区三区国产幕精品 | 操逼免费网站| 国产91丝袜在线播放| 国产av毛片| 中文字幕中文字幕一区| 七十路の高齢熟女千代子下载| 欧美日韩精品在线| 91在线无码精品入口电车| 羞羞视频com.入口| a片在线电影网| av中文无码| 欧美色图网站| 伊人大香蕉网站| 99一区二区| 米奇电影777无码| 自拍偷拍精品视频| 蜜桃视频一区二区三区| 国产成人无码一区二区在线播放| 91九九九| 亚洲AV永久无码国产精品久久| 玖玖成人电影| 四虎影库男人天堂| 日本黄色录像| 五月婷婷俺來也| 国产91视频在线观看| 蜜桃Av噜噜一区二区三区| 中文亚洲视频| 国产女人在线观看| 亚洲一区视频在线| 老司机AV| 亚洲午夜影院在线| AV无码电影| 久久久久久无码视频| 最新国产精品| 短发妹子双人啪啪秀| 成人网站www污污污网站公司| 高清无码在线看| 懂色av蜜臀av粉嫩av分| 午夜av影院| 爱爱亚洲| 亚洲无aV在线中文字幕| 成人中文字幕网站| A级片在线观看| 国产日韩a| 日韩高清无码专区| 人人操人人透| 久久免费视屏| 老司机在线免费视频| 国产精品欧美一区二区三区苍井空 | 国产无遮挡又黄又爽| 日本少妇电影| 日韩无码五月天| 亚洲人气无码AV| aaa片| 肉片无遮挡一区二区三区免费观看视频 | 国产最新AV| 国产成人精品在线| 国产白浆一区二区三区| 五月丁香成人网| 丁香婷婷在线| 精品无码秘人妻一区二区三区| 成人手机在线视频| 成人国产综合| 亚洲免费观看高清完| 亚洲色久| 久久九一| 色婷婷综合网| www.日韩一区| 中文字幕国产| 成人网站免费视频| 撸撸操在线视频观看只有精品| 中文字幕15页| 综合五月婷婷| 美女91视频| 日韩无码123区| 操逼网站在线观看| 国产做受| 蜜桃网站| 亚洲欧美另类色图| 波多野结衣无码高清| 午夜av在线免费观看| 国产一级a片| 久久私人影院| 午夜亚洲AV永久无码精品蜜芽| av在线资源观看| 久久嫩草精品| 天美精东蜜桃91| 永久免费叼嘿| 国产又爽又黄免费网站校园里| 韩国gogogo高清在线完整版 | 激情视频免费看| 日韩一级无码特黄AAA片| 人妻无码在线观看| 午夜AV影院| 91视频在线观看免费大全| 日韩欧美中文字幕在线观看| 精品久久免费视频| 麻豆免费福利视频| 大茄子熟女AV导航| 日韩一级中文字幕| 亚洲性爱无码| 91精品人妻一区二区三区四区| 日本不卡一区| 一级a看片在线观看| 人妻少妇偷人精品无码免费| 97色色超碰| 人人色网站| 操b在线观看| 欧美激情四射| 日韩成人精品中文字幕| 五月无码| 网站av| 无码人妻丰满熟妇| 天天爱av| 一级A片免费黄色视频| 翔田千里無碼破解| 操B视频在线| 一级女婬片A片AAAA片| 日韩a√| 91在线观看| aaa久久| 精品人人人| 免费a在线观看| 亚洲色热| 狠狠操一区| 国产精品久久久久久久久久九秃| 欧美一级a视频免费放| 欧美日韩在线免费观看| 翔田千里無碼破解| 成人免费一级视频| 久久免费精品视频| 嫩BBB| 九九色色| 天天草天天射| 国产成人无码Av片在线公司 | 中文字幕乱码中文乱码图片| 成人三级片在线观看| 狠狠干伊人| 国产特黄视频| 亚洲vs无码秘蜜桃少妇| 51妺嘿嘿午夜福利在线| 国产乱在线| 91久久婷婷| 欧美熟妇一区二区| 激情aaa| 中文日韩欧美| 亚洲AV无码秘翔田| 中文字幕网在线| 日逼综合| 影音先锋男人你懂的| 国产精品久久久久久久免牛肉蒲| 精品午夜福利| 大香蕉尹人在看| 国产熟女一区二区久久| 五月天色综合| 91精品婷婷国产综合久久蝌蚪| 日本人妻中出| 婷婷五月天无码| 欧美在线视频网| 曰本精品综合网在线| 亚洲免费中文字幕| 成人做爰黄A片免费| 国产中文字幕AV| 国产中文字幕在线视频| 久久久久久久久久久国产| 人人操人人操人人操人人操人人操 | 久久国产一区二区| 欧美色五月| 黄色直播在线观看| 日韩免费成人视频| 一级国产黄色视频| 91探花视频精选在线播放| 亚洲社区在线观看| 五月天堂婷婷| 婷婷色av| 久久久久久婷婷| 99色热视频| 蕉久中文字慕| 俺去听听婷婷| 亚洲少妇熟女| 亚州操B| 天天综合久久| 91丨PORNY丨丰满人妻网站| 国产黄色片在线播放| 精品国产免费观看久久久_久久天天| 青青草激情视频| 成人无码免费毛片| 很很撸在线视频| 精品人妻一区二区三区鲁大师| 99国产精品99久久久久久粉嫩| 三级成人视频| 成人在线伊人| 91久色| 亚洲免费成人视频| 欧美黄色成人视频| 国产成人精品无码片区在线观91 | 欧美狼友| 丰满BBwBBwBBwBBW| 欧美在线视频播放| 先锋影音成人资源| 91牛视频| 国产av激情| 刘玥无码| 亚洲福利免费观看| 日本成人激情视频| 欧美天堂在线| 免费无码一区| 乱轮少妇| 水密桃网站| 久久婷婷国产综合| 日本欧美中文字幕| 强伦轩人妻一区二区三区最新版本更新内容| 青春草在线观看视频| 欧美日韩精品一区二区三区视频播放 | 中文字幕理论片| 精品无码一区二区三区四区久久久软件| 黄色在线免费| 免费黄片视频在线观看| 2025最新国产成人精品| 日韩一级免费观看| 一级操逼视频免费观看| 嫩BBB槡BBBB槡BBB| 东方AV在线播放| 青青草成人电影| 亚洲午夜成人精品一区二区| 国产无码激情| 国产伊人影院| 丰满熟妇人妻无码视频| 日韩一区二区三区在线视频| 国产精品国产精品国产专区不| 午夜福利100理论片| 2017天天干天天射| 国产精品91久久久| 久久久久久久国产| 国产精品久久久久久久久久久免费看 | 操逼逼网站| 日韩色情电影| 2025天天操夜夜操| 美国一级A片草草视频| 成人免费大香蕉| 日韩免费黄色电影| 一级成人毛片| 香蕉操逼| 97人妻人人澡人人| 亚洲三级自拍| 天堂素人| 色色婷婷五月天| 日韩免费一区| 久久区| 伊人色播| 午夜视频在线看| 嫩BBB槡BBBB槡BBBB二一| 西西www444无码大胆| 中文字幕片av| 亚洲高清无码视频在线观看| 高清无码电影| 少妇超碰| 中文字字幕在线中文| 日韩高清区| 国产九九热| A视频免费| 亚洲啊v| 最近中文字幕高清2019中文字幕| 免费看操逼视频| 精品人妻一区二区免费蜜桃视频| 自拍视频在线观看| 欧美日韩亚洲视频| 日本三级片网址| 在线无码视频观看| 男人操女人视频网站| 败火老熟女ThePorn视频 | 中文字幕三区| aaa黄片| 老司机AV| 欧美日本在线观看| 老婆中文字幕乱码中文乱码| 日本做爱视频| 精品视频日韩| 欧美成人国产| 国产成人久久精品麻豆二区| 中文在线最新版天堂8| 国产熟女一区二区视频网站| 蜜柚av| 国产三级在线播放| 色99999| 久久嫩草精品久久久久| 激情av在线| 久久久WWW成人免费精品| 伊人综合大香蕉| 97精品人妻一区二区| 狼色AV| 毛片天天干| 日韩极品视频在线| 无码成人在线观看| 婷婷手机在线| 牛牛成人在线视频| 97伊人| 久久久久久久国产| www.麻豆网91成人久久久| 久久久久成人片免费观看蜜芽| 精品一区二区三区免费毛片| 亚洲无码AV在线播放| 亚洲春色一区二区三区| 亚洲三级网| av在线中文| 欧美性猛交XXXX乱大交HD | 九九久久精品视频| 91国内精品| 国产精品伦子伦免费视频| 成人毛片在线大全免费| 久久九九免费视频| 国产A级成人婬片1976| 美女性爱3P视频| 蜜挑视频一区二区三区| 亚洲综合伊人| 蜜桃av| 操操影院| 天天狠狠| 人人爽人人爽| 91在线精品秘一区二区黄瓜| 亚洲欧洲在线视频| 欧美A视频| 久久久婷婷婷| 中文字幕一区二区三区四区50岁| 91大鸡巴| 影音先锋男人资源站| 欧美一区视频| 91成人一区二区三区| 国产在线中文字幕| 极品人妻疯狂3p超刺激| 欧美日韩成人视频| 亚洲无码黄片| 亚洲欧美视频在线| 国产福利视频导航| 国产一级片免费观看| 中文字幕AV播放| a视频免费在线观看| 久久一二三区| 六月婷婷久久| 91精品国产偷窥一区二区| 久久免费小视频| 日韩成人在线免费观看| 亲子乱一区二区三区视频| 九色PORNY国产成人| 亚洲黄色在线视频| 久久婷五月| 一级A片60分钟免费看| 亚洲黄色免费网站| 蜜桃av秘无码一区二区三区 | 性猛交AAAA片免费看蜜桃视频| 国产免费AV在线| A片网站在线观看| 青青草社区| 亚洲欧美日韩色图| 高清无码做爱视频| 91成人电影在线| 操B网址| 国产理论电影| 日韩福利在线观看| 五月婷婷欧美| 国产精品内射| 超碰在线| 在线中文字幕在线观看| 国产精品视频一区二区三区在线观看| 99久久精品一区二区成人| 欧美老妇大BBBBXXXX| 成人做爰黄级A片免费看土方| 亚洲视频在线观| 大肉大捧一进一出免费阅读| 激情无码在线观看| 九九视频网| 人人妻人人澡人人爽人人爽| 久久久精品午夜人成欧洲亚洲韩国| 日皮视频在线| 亚洲第一黄网| 69国产精品成人无码| 最新国产AV| 精品偷拍| 91AV视频在线观看| 国产AV18岁| 国产在线观看97| 大鸡巴操小逼视频| 久久AV电影| 色播av| 亚洲AV成人无码精品| 欧美日韩黄色片| av天堂中文在线| 极品人妻疯狂3p超刺激| A片视频在线观看| 欧美日屄| 久久成人电影| 丁香五月天在线播放| AV1区二区| 免费无码国产在线怀| 被黑人操| 99热免费精品| 日韩一级片在线播放| 久久精品女人| 日本免费中文字幕| 午夜福利黄色| 国产黄色不卡| 国产精品麻豆视频| 女人BBBB| 国产1级a毛a毛1级a毛1级| 日本在线一区| 亚洲一区二区在线视频| 国产性爱精品| 人妻互换一二三区免费| 国产69精品久久久久久久久久久久| 大草AV| 操操操AV| 成人网站中文字幕| 久操网在线| 九九精品热播| 丁香婷婷视频| 男人的天堂视频| 激情丁香五月| 久久国产热在8| 91国产精品在线视频| 免费黄色av网址| 国产欧美日韩在线视频| 一级一A片一a免费看| 青娱乐无码| 婷婷五月天视频| 欧美色色色网| 婷婷五月激情小说| 欧美一级a视频免费放| 欧美A在线观看| 强开小嫩苞一区二区电影| 91探花在线观看| 黄色一级大片| 怡春院综合| 91白丝喷水自慰网站| 最新毛片网站| 91久久成人| 亚洲无码一区二区三区| 大香蕉日韩| 97日韩天堂| 中日韩中文字幕一区二区区别| 久草大香蕉视频| 91骚| 免费无码AV| jizzjizzjizzjizz| 超碰在线| 午夜成人国产| 国产一区二区三区免费观看 | 天天射天天操天天干| 老骚逼| 日本A片在线观看| 成人做爰免费网站2023| 亚洲欧美久久久久久久久久久久| 91三级片在线观看| 欧美午夜无码| 尻屄网| 青春草在线观看| 日韩欧美日本| 亚洲天堂国产视频| 中文字幕在线电影| 影音先锋国产| 黄色成人在线观看| 国产精品欧美综合亚洲| 91ncom| 国产三级片在线观看视频| 亚洲无aV在线中文字幕| 精品熟女| 亚洲A片免费看| av网站在线播放| 波多野结衣久久中文字幕| A级成人网站| 激情婷婷 | 无码专区一区二区三区| 欧美人妻视频在线| 免费观看一级黄片| 国产乱子伦-区二区三区熟睡91 | 国产AV无码精品| 亚洲色在线观看| 成人黄色电影在线观看| 日韩精品一区二区三| 成人H视频| www.豆花视频成人版| 东京热一区二区三区| 亚洲无码电影在线观看| 午夜免费福利视频| 国产c区| 国产视频福利在线| 欧美日韩成人电影| 国产精品久久久久国产A级| 就爱搞搞| 先锋影音中文字幕| 爽好紧别夹喷水网站| 久久99久久视频| 少婦揉BBBB揉BBBB揉| 3d动漫精品H区XXXXX区| 亚洲免费专区| 国产一区二区免费看| 台湾精品一区二区三区| 午夜九九九| 成人在线免费视频观看| 国产免费观看av| 91x色| 91精品免费视频| 人人插人人| 免费看黄片| 午夜激情久久| 日本爱爱视频免费| 国产一级视频| 欧美射图| 日韩无码精品一区二区三区| а√最新版天堂中文在线| 在线观看黄片| 不卡无码中文字幕| a级网站| 91无码电影| 成人免看一级a一片| 波多野59部无码喷潮| 69AV无码| 亚洲在线中文字幕| 欧美日韩岛国| 欧美日韩中文字幕在线视频| 丰满少妇在线观看网站| 老司机狠狠干| 日韩国产传媒| h片在线看| 九九热精品| 国产精品久久7777777精品无码| 人人干人人干人人干| 国产精品成人AV在线| 久久久久久久三级片| 免费无码在线视频| 蜜臀久久久久久999| 久久久3| 91久久无码一区人妻A片蜜桃| 黄色成人网站在线播放| 天天干天天干天天干| 国产主播一区二区| 激情五月天在线观看| 99re在线观看| 日韩一级网| 狠狠色婷婷777| 91精品人妻一区二区三区蜜桃 | 男人天堂视频网站| 久久久免费| 天天天做夜夜夜夜爽无码| 欧美日韩一区在线观看| 无码AV大香线蕉伊人| 91性爱小视频| 日本黄色免费在线观看| 国产剧情在线| 色999在线播放视频| 激情播播网| 色片在线| 午夜精品久久久久久不卡8050| 51精品日本| 婷婷丁香综合| 欧美色一级| 成人午夜精品无码区| 亚洲免费专区| 52妺嘿嘿午夜福利在线| 97无码精品人妻一区二区三区| 操逼视频在线播放| 操比免费视频| 中文字幕在线观看日本| 欧美精产国品一二三产品在哪买| 精品久久三级片| 精品孕妇孕交无码专区| 亚洲成人免费视频| 极品久久久久| 日韩国产一区二区| 中文字幕东京热加勒比| 国产精品扒开腿做爽爽爽视频| 久久久久久免费视频| 精品人妻系列| 日日日日日干| 色老板在线观看永久免费视频| 日韩AV无码高清| jizz国产精品| 招土一级黄色片| 日本黄色片视频| 天天干天天看| 国产精品99久久免费黑人人妻| 91在线成人| www.中文字幕|