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

前端中的那些 This vs That,你知道嗎?

開(kāi)發(fā) 前端
前端中還有很多相近的概念和 API,在業(yè)務(wù)開(kāi)發(fā)時(shí)可能沒(méi)時(shí)間去了解,但是有空的時(shí)候還是可以花點(diǎn)時(shí)間去掌握其中的異同,扎實(shí)自己的前端基礎(chǔ)。

前端知識(shí)中有很多相近的概念或 API,相信不少人在開(kāi)發(fā)中有注意到這些相近的概念或 API,但是有時(shí)不會(huì)深入去了解異同,只要某個(gè) API 能滿(mǎn)足開(kāi)發(fā)需求即可。

本文將介紹一些相近的概念和 API,讓你能更清晰地了解它們的異同,在使用時(shí)更游刃有余。

1. cookie vs localStorage vs sessionStorage

前端開(kāi)發(fā)中,這三個(gè)本地存儲(chǔ)方案可以說(shuō)是很常見(jiàn)的,用一張圖說(shuō)明下它們的區(qū)別:

comparison-tablecomparison-table

圖片來(lái)源:local-storage-vs-session-storage-vs-cookies[1]

圖中從存儲(chǔ)大小、是否自動(dòng)過(guò)期、服務(wù)端是否可以獲取、是否支持 HTTP 請(qǐng)求傳輸和數(shù)據(jù)持久性方面進(jìn)行對(duì)比。除了圖中幾個(gè)部分,在作用域方面,cookie 由域名和路徑?jīng)Q定,localStorage 和 sessionStorge 都是遵守同源策略。

最后再提幾個(gè)關(guān)于在使用 sessionStorage 的時(shí)偶爾會(huì)陌生的知識(shí)點(diǎn):

  1. sessionStorage 數(shù)據(jù)在各個(gè)直接打開(kāi)的瀏覽器頁(yè)簽中是不會(huì)同步的,這意味著你打開(kāi)了兩個(gè)同域名的網(wǎng)站,在其中一個(gè)設(shè)置了 sessionStorage 數(shù)據(jù),另一個(gè)頁(yè)面是不會(huì)同步這個(gè)數(shù)據(jù)的(而 localStorage 會(huì)),也就是說(shuō) sessionStorage 除了關(guān)閉瀏覽器時(shí)不會(huì)保留數(shù)據(jù),各個(gè)頁(yè)簽數(shù)據(jù)的同步也和 localStorage 不一樣。
  2. 如果你在當(dāng)前頁(yè)設(shè)置了一些 sessionStorage 數(shù)據(jù),然后通過(guò) window.open 或 <a> 標(biāo)簽打開(kāi),新頁(yè)簽會(huì)同步一份當(dāng)前頁(yè)副本,隨后兩個(gè)頁(yè)簽的 sessionStorage 又會(huì)是獨(dú)立的,不過(guò)要注意打開(kāi)新頁(yè)簽的 rel 屬性(用于指定當(dāng)前文檔與被鏈接文檔的關(guān)系)要設(shè)置為 opener。

圖片圖片

2. querySelectorAll vs getElementsByTagName

querySelectorAll 可以根據(jù)傳入的 CSS 選擇器查找 HTML 元素,使用上比 getElementsByTagName 更靈活。

它們之間的不同點(diǎn)在于:querySelectorAll 返回的是一個(gè)靜態(tài)的 NodeList,而 getElementsByTagName 返回的是動(dòng)態(tài)的。

來(lái)看下面這個(gè)示例:

<ul>
    <li>1</li>
    <li>2</li>
    <li>3</li>
</ul>

接下來(lái)使用兩個(gè)方法獲取 li 元素類(lèi)數(shù)組,然后再動(dòng)態(tài)插入一個(gè) li,最后查看兩個(gè)類(lèi)數(shù)組的長(zhǎng)度。

const listItems = document.querySelectorAll('li');
const listItems2 = document.getElementsByTagName('li');
console.log(listItems.length, listItems2.length);  // 3,3

const list = document.querySelector('ul');
const li = document.createElement('li');
li.innerHTML = '4';
list.appendChild(li);

console.log(listItems.length, listItems2.length);  // 3, 4

可以看到 querySelectorAll 方法獲取的類(lèi)數(shù)組長(zhǎng)度在動(dòng)態(tài)添加 li 后還是 3,而 getElementsByTagName 的為 4。

常用的獲取元素方法中g(shù)etElementsByClassName 方法、element.childNodes 和 element.children 返回的也是動(dòng)態(tài) NodeList。

3. children vs childNodes

children 和 childNodes 都可以用來(lái)獲取元素的子節(jié)點(diǎn),不同的是 children 只會(huì)獲取 HTML 元素節(jié)點(diǎn),而 childNodes 會(huì)獲取到非 HTML 元素節(jié)點(diǎn),包括文本、注釋節(jié)點(diǎn)等。

<ul>
    <!-- 這里有有些內(nèi)容 -->
    <li>A</li>
    <li>B</li>
    <li>C</li>
</ul>
const parent = document.querySelector('ul');
// 輸出 HTMLCollection(3) [li, li, li]
console.log(parent.children)
// 輸出 NodeList(10) [text, comment, text, text, li, text, li, text, li, text]
console.log(parernt.childNodes)

4. microtasks vs macrotasks

宏任務(wù)和微任務(wù)概念也經(jīng)常在前端中出現(xiàn),與之相關(guān)的就是事件循環(huán)機(jī)制。事件循環(huán)機(jī)制是必須掌握的,宏任務(wù)和微任務(wù)也可以了解下,實(shí)際開(kāi)發(fā)中碰到相關(guān)問(wèn)題能反應(yīng)過(guò)來(lái)是宏任務(wù)和微任務(wù)的不同即可。

宏任務(wù)包括:

  • setTimeout and  setInterval 的回調(diào)
  • DOM 操作
  • I/O 操作 (Node 中讀寫(xiě)文件)
  • requestAnimationFrame

微任務(wù)包括:

  • Promises 的 resolve 和 reject
  • MutationObserver 回調(diào)
  • Node 中的 process.nextTick

事件循環(huán)機(jī)制如下圖:

圖片圖片

宏任務(wù)微任務(wù)執(zhí)行順序如下圖:

圖片圖片

最后配合一個(gè)例子看下效果:

console.log('Script start')

setTimeout(function () {
  console.log('setTimeout')
}, 0)

new Promise((resolve) => {
  console.log('Promise')
}).then(function () {
  console.log('Promise then')
})

console.log('Script end')

// 輸出順序?yàn)? Script start、Promise、Script end、Promise then、setTimeout

一個(gè)更清晰的圖(源[2]):

圖片圖片

5. setTimeout(0) vs requestAnimationFrame

setTimeout(0) 和 requestAnimationFrame 都能把代碼延遲到下一個(gè)動(dòng)畫(huà)幀運(yùn)行,它們的不同在于:

  • setTimeout(0) 將代碼推到事件循環(huán)的任務(wù)隊(duì)列中,如果任務(wù)隊(duì)列中有大量任務(wù),setTimeout(0) 就不會(huì)立即執(zhí)行。
  • requestAnimationFrame 會(huì)在下一次渲染前執(zhí)行,而不是在事件循環(huán)中執(zhí)行,它能自動(dòng)與顯示器刷新率同步。不過(guò),它只有在瀏覽器準(zhǔn)備好渲染新幀時(shí)才會(huì)執(zhí)行,如果標(biāo)簽頁(yè)處于非激活狀態(tài),它就不會(huì)運(yùn)行。

處理動(dòng)畫(huà)時(shí),requestAnimationFrame 更合適, 如果你要延遲執(zhí)行代碼的話(huà),可以直接使用 setTimeout(0)。

補(bǔ)充一個(gè)小點(diǎn):setTimeout 的語(yǔ)法是  setTimeout(functionRef, delay, param1, param2, /* … ,*/ paramN),除了回調(diào)函數(shù)和延遲時(shí)間,后續(xù)參數(shù)都會(huì)作為回調(diào)函數(shù)的參數(shù)。

// 1 秒后輸出 delay 1s
setTimeout(console.log, 1000, 'delay 1s')

6. naturalWidth vs width

naturalWidth 是元素的自然寬度,它永遠(yuǎn)不會(huì)改變。例如,一張 100px 寬的圖片的 naturalWidth 始終是 100px,即使通過(guò) CSS 或 JavaScript 調(diào)整圖片大小后也不變。

而 width 是可以改變的,可以通過(guò) CSS 或 JavaScript 設(shè)置。

圖片圖片

7. stopImmediatePropagation vs stopPropagation

stopImmediatePropagation() 方法與 stopPropagation() 方法一樣,可阻止事件冒泡。但是,stopImmediatePropagation() 方法會(huì)阻止元素同一事件的其他監(jiān)聽(tīng)器。

button.addEventListener('click', function () {
  console.log('foo')
})

button.addEventListener('click', function (e) {
  console.log('bar')
  e.stopImmediatePropagation()
})

button.addEventListener('click', function () {
  console.log('baz')
})

上面代碼中按鈕點(diǎn)擊后只會(huì)輸出 foo and bar,baz 的事件監(jiān)聽(tīng)函數(shù)不會(huì)觸發(fā)。

8. HTML 字符實(shí)體 vs Unicode 字符

HTML 實(shí)體是特殊字符序列,用來(lái)表示可能被誤認(rèn)為是 HTML 代碼的字符,如小于號(hào) (<) 或雙引號(hào) (&)。

下面是一些常見(jiàn)的 HTML 實(shí)體:

  • &lt; 代表小于號(hào) <
  • &gt; 代表大于號(hào) >
  • &amp; 代表于符號(hào) &
  • &quot; 代表雙引號(hào) "
  • &apos; 或 &#39; 代表單引號(hào) '
  • &nbsp; 代表空格

HTML 字符實(shí)體相比 Unicode 字符會(huì)更好記些,同時(shí)瀏覽器對(duì) HTML 字符實(shí)體支持更好。

Unicode 是表示字符或符號(hào)的特定代碼,它們用于顯示標(biāo)準(zhǔn)字符集中可能沒(méi)有的字符,如非拉丁字母或特殊符號(hào)。

一些 Unicode 字符示例:

  • \u00A9 表示版權(quán)符號(hào) (?)
  • \u2192 表示右箭頭 (→)
  • \u2615 代表咖啡杯 (?)
  • \u1F60E 代表戴著墨鏡的笑臉 (??)
  • \u2764 表示一顆紅心 (?)

Unicode 可以表示任何語(yǔ)言的任何字符或符號(hào),不過(guò)舊版本瀏覽器的支持性可能沒(méi)那么好。

9. script async vs script defer

當(dāng)瀏覽器碰到 script 標(biāo)簽時(shí),會(huì)執(zhí)行以下步驟:

  • 暫停文檔解析
  • 創(chuàng)建一個(gè)新請(qǐng)求來(lái)下載腳本
  • 下載完成后執(zhí)行腳本
  • 繼續(xù)解析文檔

script 標(biāo)簽會(huì)阻塞整個(gè)文檔的解析,為了提供更好的體驗(yàn),HTML5 為 script 標(biāo)簽提供了兩個(gè)屬性,它們是 async 和 defer。

<script src="/path/to/script.js" async></script>
<script src="/path/to/script.js" defer></script>

這兩個(gè)屬性讓瀏覽器知道,該腳本與文檔解析可以同時(shí)進(jìn)行。

async 和 defer 的效果如上圖。

async 會(huì)在下載完成后立即執(zhí)行(下載不阻塞 HTML 解析,執(zhí)行會(huì)),所以多個(gè) script 標(biāo)簽都使用 async 屬性的話(huà),是不能保證多個(gè) script 的執(zhí)行順序,而使用 defer 的話(huà),下載完后會(huì)等待 HTML 解析完成再執(zhí)行,可以保證多個(gè) script 的執(zhí)行順序。

所以 async 一般在獨(dú)立的腳本上使用,如埋點(diǎn)腳本。

還有一點(diǎn),動(dòng)態(tài)加載的腳本 async 默認(rèn)為 true,如果你不需要,可以設(shè)置為 false:

const script = document.createElement('script');
script.src = '/path/to/script.js';
script.async = false;
document.head.appendChild(script);

10. __proto__ vs prototype

__proto__ 和 prototype 的區(qū)別很簡(jiǎn)單:

  • __proto__ 是對(duì)象實(shí)例的屬性
  • prototype 是構(gòu)造函數(shù)的屬性

當(dāng)你使用 __proto__ 時(shí),你是正在查找對(duì)象原型鏈上的屬性和方法,而 prototype 對(duì)象定義了所有實(shí)例都將擁有的共享屬性和方法。

圖片圖片

如上圖,Letter 函數(shù)的 prototype 屬性和其三個(gè)實(shí)例的 __proto__ 屬性都是指向 Letter 的原型鏈對(duì)象 Letter.prototype。

11.Dependencies vs devDependencies vs peerDependencies

dependencies 代表依賴(lài)項(xiàng)是項(xiàng)目中的一部分,最終會(huì)被一起打包到生產(chǎn)代碼中,當(dāng)你執(zhí)行 npm install 時(shí),你依賴(lài)的那個(gè)包的依賴(lài)也會(huì)自動(dòng)安裝,比如你項(xiàng)目使用到了 antd, npm install 時(shí) antd 的依賴(lài)項(xiàng) classnames 也會(huì)被安裝,這就是你有時(shí)候沒(méi)安裝一些庫(kù),但是也可以使用的原因。

"dependencies": {
    "lodash": "^4.17.21"
}

devDenpendencies 代表依賴(lài)項(xiàng)是僅在開(kāi)發(fā)過(guò)程中才需要的,代碼的最終生產(chǎn)版本并不需要這些依賴(lài)項(xiàng)。

"devDependencies": {
    "jest": "^29.6.4"
}

peerDependencies 代表使用這個(gè)庫(kù)時(shí)需要的依賴(lài)項(xiàng),和 dependencies 不同的是,它不會(huì)在 npm install 時(shí)被安裝,需要你顯式的在自己項(xiàng)目下安裝。各個(gè)包管理器的各個(gè)版本對(duì) peerDependencies 的處理可能都不同,有興趣的可以繼續(xù)深入了解。

"peerDependencies": {
    "react": ">=16.9.0",
    "react-dom": ">=16.9.0"
  },

12. isNaN vs Number.isNaN

isNaN 是一個(gè)全局函數(shù),用于判斷參數(shù)是否為 NaN,不過(guò),在判斷參數(shù)是否為 NaN 之前,它會(huì)嘗試先將參數(shù)轉(zhuǎn)換為數(shù)字。

isNaN('hello');     // true
isNaN(undefined);   // true
isNaN({});          // true
isNaN([]);          // false  +[] === 0
isNaN(42);          // false

在 ES6 中引入了 Number.isNaN 函數(shù),與 isNaN 不同的是,在判斷前 Number.isNaN 不會(huì)轉(zhuǎn)換參數(shù)。

Number.isNaN('hello');      // false
Number.isNaN(undefined);    // false
Number.isNaN({});           // false
Number.isNaN([]);           // false
Number.isNaN(42);           // false
Number.isNaN(NaN);          // true

一般來(lái)說(shuō),使用 Number.isNaN 比 isNaN 更準(zhǔn)確。

13. 默認(rèn)參數(shù) vs 或操作符

JavaScript 提供了兩種為函數(shù)參數(shù)設(shè)置默認(rèn)值的方法:使用默認(rèn)參數(shù)或 OR (||) 操作符,兩者在最終效果上會(huì)有一些不同。

先來(lái)看默認(rèn)參數(shù):

const sayHello = (name = 'World') => {
  console.log(`Hello, ${name}!`);
};

sayHello();                 // `Hello, World!`
sayHello(undefined);        // `Hello, World!`
sayHello(null);    // `Hello, null!`
sayHello('');    // `Hello, !`
sayHello("Phuoc Nguyen");   // `Hello, Phuoc Nguyen!`

可以看到默認(rèn)參數(shù)只有為 undefined 的時(shí)候,默認(rèn)參數(shù)才會(huì)生效。不傳和傳 undefined 效果一致。

再來(lái)看或操作符:

const sayHello2 = (name) => {
    const withDefaultName = name || 'World';
    console.log(`Hello, ${withDefaultName}!`);
};

sayHello2();                 // `Hello, World!`
sayHello2(undefined);        // `Hello, World!`
sayHello2(null);    // `Hello, World!`
sayHello2('');     // `Hello, World!`
sayHello2("Phuoc Nguyen");   // `Hello, Phuoc Nguyen!`

可以看到參數(shù)只要是 falsy 值(undefined、null、NaN、0、""和 false),都會(huì)使用代碼中默認(rèn)參數(shù),這個(gè)就是和 ES6 默認(rèn)參數(shù)不同的地方。

14. null vs undefined

null 和 undefined 的不同點(diǎn)如下:

  1. undefined 表示變量已經(jīng)被聲明,但未被賦值;null 用來(lái)表示變量沒(méi)有值。
let foo;
console.log(foo); // undefined

let foo = null;
console.log(foo); // null
  1. undefined 和 null 代表的類(lèi)型不同。
console.log(typeof undefined); // 'undefined'
console.log(typeof null); // 'object'

除了以上兩點(diǎn)不同之外,還有兩點(diǎn)值得關(guān)注的:

  1. undefined 和 null 進(jìn)行比較的結(jié)果。
null == undefined; // true
null === undefined; // false
  1. JSON.stringify 會(huì)忽略 undefined, 但是會(huì)保留 null。
JSON.stringify({
    name: 'John',
    address: null,
    age: undefined,
});

// {"name":"John","address":null}

小結(jié)

前端中還有很多相近的概念和 API,在業(yè)務(wù)開(kāi)發(fā)時(shí)可能沒(méi)時(shí)間去了解,但是有空的時(shí)候還是可以花點(diǎn)時(shí)間去掌握其中的異同,扎實(shí)自己的前端基礎(chǔ)。

參考資料

[1]local-storage-vs-session-storage-vs-cookies: https://www.loginradius.com/blog/engineering/guest-post/local-storage-vs-session-storage-vs-cookies/

[2]圖片源: https://medium.com/@francesco_rizzi/javascript-main-thread-dissected-43c85fce7e23

責(zé)任編輯:武曉燕 來(lái)源: 栗子前端
相關(guān)推薦

2014-05-30 10:23:15

樂(lè)跑手環(huán)智能手環(huán)運(yùn)動(dòng)手環(huán)

2022-05-27 08:55:15

工具自動(dòng)化軟件

2024-10-12 08:01:53

2019-01-07 13:01:08

Linux驚嘆用法命令

2024-11-20 08:31:49

前端全棧技術(shù)

2020-11-04 10:19:09

前端開(kāi)發(fā)插件

2024-06-14 08:36:57

2023-12-12 08:41:01

2022-09-29 15:32:58

云計(jì)算計(jì)算模式

2021-10-14 06:52:47

算法校驗(yàn)碼結(jié)構(gòu)

2024-09-18 07:00:00

消息隊(duì)列中間件消息隊(duì)列

2022-03-10 08:25:27

JavaScrip變量作用域

2019-12-12 09:23:29

Hello World操作系統(tǒng)函數(shù)庫(kù)

2024-04-07 00:00:00

ESlint命令變量

2024-05-28 09:12:10

2022-11-10 09:00:41

2023-04-26 10:21:04

2023-12-20 08:23:53

NIO組件非阻塞

2024-04-30 09:02:48

2024-09-12 08:20:39

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

一级久久久久久| 久久久福利影院| 啊v视频在线| 狠狠色丁香婷婷综合| 欧美国产日韩在线| 精品中文字幕在线播放| 99久久婷婷国产综合精品首页| 亚洲视频 欧洲视频| 国产伦一区二区三区色一情| 久久夜色精品国产噜噜亚洲av| 99国产精品一区二区| 欧美va亚洲va香蕉在线| 日本xxxxxxx免费视频| 伊人在我在线看导航| 国产欧美精品在线观看| av一区二区三区免费| www.com国产| 欧美激情性爽国产精品17p| 日韩精品在线免费| 国产成人精品综合久久久久99 | 亚洲最大福利视频网| 国产成人一级片| 激情综合在线| 久久亚洲精品毛片| 亚洲а∨天堂久久精品2021| 成人h动漫精品一区二区器材| 在线欧美一区二区| 激情伊人五月天| 在线āv视频| 一区精品在线播放| 日韩国产精品一区二区三区| 少妇高潮一区二区三区99小说 | 亚洲午夜精品在线观看| 国产福利91精品一区二区| 欧美日韩国产页| 国产精品免费看久久久无码| 国内在线免费高清视频| 91麻豆国产精品久久| 国产精品区二区三区日本| 国产精品伊人久久| 国内成+人亚洲+欧美+综合在线| 国产精品成人国产乱一区| 国产福利拍拍拍| 欧美日本不卡高清| 欧美激情免费在线| 久草免费在线观看视频| 国产精品二区影院| 欧美成人午夜激情在线| 美女的奶胸大爽爽大片| 亚洲午夜精品一区二区国产| 久久综合亚洲社区| 印度午夜性春猛xxx交| 91精品国产成人观看| 久久在精品线影院精品国产| 精品国产国产综合精品| 香蕉视频国产精品| 久久久精品免费| 蜜臀久久精品久久久用户群体| 重囗味另类老妇506070| 久久99久久99精品免观看粉嫩 | 亚洲区免费视频| 啄木系列成人av电影| 亚洲人成网7777777国产| 色无极影院亚洲| av资源久久| 最好看的2019的中文字幕视频| 精品少妇一区二区三区密爱| 久久精品久久久| 欧美成人免费播放| 日本污视频在线观看| 亚洲欧美大片| 国产欧美日韩精品丝袜高跟鞋| 一区二区三区免费在线| 国产精品一区二区在线观看不卡| 999在线观看免费大全电视剧| 日韩一级片免费在线观看| 久久综合九色欧美综合狠狠| 日韩成人在线资源| 97超碰资源站在线观看| 午夜精品一区二区三区电影天堂| 日本女优爱爱视频| 91成人福利社区| 亚洲成人久久久久| 舐め犯し波多野结衣在线观看| 国产精品成人av| 国内精品一区二区三区四区| 国产成人a v| 国产精品综合二区| 开心色怡人综合网站| 婷婷视频在线| 精品久久久视频| 亚洲欧美日韩综合网| 成人香蕉社区| 日韩在线播放视频| 在线观看亚洲欧美| 久久99久久99| 久久精品国产精品青草色艺 | 国产 欧美 自拍| 日本一区二区三区高清不卡| 国产成人一区二区三区别| 欧美无毛视频| 精品国产乱码久久久久久1区2区| 色欲狠狠躁天天躁无码中文字幕| 国产精品videosex极品| 国产精品国模在线| 无码精品一区二区三区在线 | 国产乡下妇女做爰视频| 美日韩一级片在线观看| 国产欧美欧洲| 国产在线高潮| 色婷婷综合久久久中文字幕| 韩国三级在线看| 91九色精品国产一区二区| 2019亚洲日韩新视频| 国产又粗又大又爽| 久久久久久97三级| 97超碰人人澡| 视频免费一区二区| 久久久www成人免费精品| 亚洲欧美一区二区三区在线观看| 成人晚上爱看视频| 爱爱爱视频网站| 日本美女久久| 亚洲美女动态图120秒| 精品无码久久久久| 国产精品自在欧美一区| 在线播放豆国产99亚洲| 99只有精品| 亚洲一区二区久久久| 国产一级做a爱片久久毛片a| 成人丝袜18视频在线观看| www.-级毛片线天内射视视| 成人在线中文| 国产亚洲欧美一区| 69亚洲精品久久久蜜桃小说| 91在线精品一区二区| 精品成在人线av无码免费看| 亚洲第一二区| 欧美激情视频一区| 成 人 免费 黄 色| 一区二区日韩电影| 三级黄色片免费观看| 一本到12不卡视频在线dvd| 成人性生交xxxxx网站| 日本a在线播放| 欧美乱妇15p| 免费国产羞羞网站美图| 黄色资源网久久资源365| 一本二本三本亚洲码| 国产 日韩 欧美| 欧美成人午夜剧场免费观看| www香蕉视频| 亚洲在线视频网站| 成熟妇人a片免费看网站| 亚洲久久在线| 欧美一区二区在线| 精品自拍视频| 理论片在线不卡免费观看| jizz国产视频| 亚洲国产成人高清精品| a视频免费观看| 日韩国产欧美在线观看| 亚洲精品国产一区| 国产一区二区视频在线看| 久久91精品国产| 少妇av在线播放| 日本韩国欧美三级| 欧美激情亚洲色图| 国产一区二区精品久久91| 国产情侣第一页| 婷婷成人在线| 国产免费一区二区三区在线能观看| av毛片在线免费| 亚洲精品一区二区三区99| 久久国产视频精品| 1024亚洲合集| 97精品人妻一区二区三区蜜桃| 午夜一级久久| 亚洲区成人777777精品| 韩国女主播一区二区三区| 国产精品高潮在线| av在线影院| 亚洲精品一区二三区不卡| 中文无码精品一区二区三区| 亚洲精品久久久蜜桃| 99久久人妻无码中文字幕系列| 日本vs亚洲vs韩国一区三区二区| 四虎4hu永久免费入口| 亚洲精品动态| 亚洲一区国产精品| 免费成人直播| 欧美风情在线观看| aaa日本高清在线播放免费观看| 日韩三级av在线播放| www.国产毛片| 亚洲一区二区在线视频| 国产精品免费无码| 成人免费黄色大片| 一区二区在线免费看| 亚洲三级视频| 99久久久无码国产精品性色戒| 日本韩国欧美超级黄在线观看| 成人性生交大片免费看视频直播 | 日本丰满少妇裸体自慰| 精品一区二区在线免费观看| 国产精品亚洲a| 亚洲福利电影| 一级黄色片播放| 激情五月综合| 久久99国产精品| 一区二区三区四区精品视频| 国产欧美日韩精品专区| 免费观看欧美大片| 98视频在线噜噜噜国产| 色a资源在线| 精品国产欧美成人夜夜嗨| 九九九伊在人线综合| 337p日本欧洲亚洲大胆精品| 国产女人18毛片水真多| 精品视频在线免费看| 天天综合天天干| 午夜精品久久久久久久| 午夜精品福利在线视频| 国产精品日韩成人| 精品国产成人亚洲午夜福利| 91视频一区二区| 国产精品入口麻豆| 丰满放荡岳乱妇91ww| 日韩a一级欧美一级| 精品无人区卡一卡二卡三乱码免费卡 | 亚洲综合自拍网| 成人午夜又粗又硬又大| 无码人妻一区二区三区在线视频| 美女国产一区二区三区| 91热这里只有精品| 日韩精彩视频在线观看| 欧美 日韩 国产 激情| 久久综合中文| 五月天婷婷激情视频| 日韩专区一卡二卡| 欧洲熟妇精品视频| 青青国产91久久久久久| 污污网站免费看| 蜜臀av性久久久久蜜臀av麻豆 | 成人免费毛片app| 动漫美女无遮挡免费| 国产不卡视频一区二区三区| 在线观看欧美一区二区| 成人午夜免费av| japanese在线观看| 91女神在线视频| 亚洲av无码一区二区三区人 | 国产99久久精品| 国产精品日日摸夜夜爽| 成人福利视频在线看| 你懂的在线观看网站| 久久亚洲二区三区| 欧美黄色一级生活片| 亚洲欧美一区二区视频| 国产精品九九九九九九| 亚洲成在线观看| 在线精品免费视| 欧美日韩极品在线观看一区| 国产三级第一页| 亚洲精品97久久| 国产高清视频在线| 久久久999精品免费| 久草在线视频资源| 日韩免费在线视频| 自拍偷拍欧美日韩| 国产精品中出一区二区三区| 免费欧美激情| 国产免费色视频| 亚洲国产导航| 亚洲黄色av网址| 国产成人av在线影院| 国产av自拍一区| 亚洲视频免费在线观看| 日韩精品视频播放| 精品视频一区二区三区免费| 精品人妻一区二区三区四区不卡 | 国产高清精品一区二区| 亚洲精品进入| 老司机午夜网站| 麻豆精品网站| 日韩一区二区三区资源| 女人被狂躁c到高潮| 国产人妖在线播放| 久久影院一区二区三区| 国产一区二区福利| 911国产精品| 日韩黄色在线视频| 欧美无砖砖区免费| 黄色片一区二区三区| 中文欧美在线视频| segui88久久综合9999| 国产日韩欧美电影在线观看| 国产精品对白| 四虎影院一区二区| 久久福利影视| 成人做爰69片免费| 国产精品传媒在线| 中文字幕免费观看| 亚洲电影天堂av| 巨大荫蒂视频欧美大片| 欧美自拍视频在线观看| 网站一区二区| 一区二区三区四区欧美| 久久都是精品| 亚洲成av人片在线观看无| 亚洲乱码精品一二三四区日韩在线| 极品国产91在线网站| 精品国产一区二区精华| 日本中文字幕伦在线观看| 欧美亚洲另类视频| 大型av综合网站| 一本二本三本亚洲码| 免费成人av资源网| 国产全是老熟女太爽了| 午夜精品久久久久久久久| 精品国产18久久久久久| 日韩在线观看成人| 国产一区二区主播在线| 麻豆91蜜桃| 国产视频一区三区| 午夜av免费看| 婷婷六月综合网| 动漫av一区二区三区| 欧美情侣性视频| 日本一区二区乱| 路边理发店露脸熟妇泻火| 久久er99精品| 日韩在线视频免费看| 欧美亚洲禁片免费| h视频网站在线观看| 日本精品一区二区三区在线 | 高清av免费一区中文字幕| 亚洲午夜精品一区 二区 三区| gogogo高清免费观看在线视频| 日本一区二区三区免费乱视频| 波多野结衣一区二区三区四区| 亚洲人成电影网站色| 欧美日韩国产网站| 少妇特黄a一区二区三区| 免费人成在线不卡| 影音先锋男人资源在线观看| 91精选在线观看| 性直播体位视频在线观看| 国产98在线|日韩| 一区精品久久| 亚洲国产精品成人综合久久久| 精品美女国产在线| 日本在线一二三| 国产精品久久久久久久久久久久 | 国内国产精品天干天干| 中文字幕一区日韩精品欧美| 国产露脸91国语对白| 久久成人国产精品| 国产精品自在| 玩弄japan白嫩少妇hd| 国产精品三级av| 国产欧美日韩综合精品一区二区三区| 久久国内精品一国内精品| 欧美久久亚洲| 久久久久久久中文| 中文字幕的久久| 国产偷拍一区二区| 97国产在线视频| 免费成人网www| xxww在线观看| 亚洲在线视频网站| 国产中文在线观看| 亚洲综合小说区| 国产精品社区| 国产精品成人69xxx免费视频| 欧美本精品男人aⅴ天堂| 亚洲国产欧美日本视频| 天堂精品视频| 国产99精品在线观看| 成年人视频免费| 色综合久久精品亚洲国产 | av成人老司机| 自拍偷拍第八页| 欧美精品videos另类日本| 国产成人影院| 超碰人人cao| 欧亚洲嫩模精品一区三区| 最新国产露脸在线观看| 欧美日韩电影一区二区三区| 国产自产高清不卡| 激情五月婷婷网| 欧美日韩第一页| 欧美残忍xxxx极端| 黄色性生活一级片| 日韩亚洲欧美高清| 日韩欧美精品一区二区综合视频| 青草视频在线观看视频| 中文字幕一区二区在线播放| 日韩欧美亚洲系列| yellow视频在线观看一区二区|