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

可以迭代大部分?jǐn)?shù)據(jù)類(lèi)型的 for…of 為什么不能遍歷普通對(duì)象?

共 8730字,需瀏覽 18分鐘

 ·

2020-12-17 12:07

關(guān)注?程序員成長(zhǎng)指北,回復(fù)“1

加入我們一起學(xué)習(xí),天天進(jìn)步

for…of 及其使用

我們知道,ES6 中引入 for...of 循環(huán),很多時(shí)候用以替代 for...in 和 forEach() ,并支持新的迭代協(xié)議。for...of 允許你遍歷 Array(數(shù)組), String(字符串), Map(映射), Set(集合),TypedArray(類(lèi)型化數(shù)組)、arguments、NodeList對(duì)象、Generator等可迭代的數(shù)據(jù)結(jié)構(gòu)等。for...of語(yǔ)句在可迭代對(duì)象上創(chuàng)建一個(gè)迭代循環(huán),調(diào)用自定義迭代鉤子,并為每個(gè)不同屬性的值執(zhí)行語(yǔ)句。

for...of的語(yǔ)法:

for (variable of iterable) {    // statement}// variable:每個(gè)迭代的屬性值被分配給該變量。// iterable:一個(gè)具有可枚舉屬性并且可以迭代的對(duì)象。

常用用法

{  // 迭代字符串  const iterable = 'ES6';  for (const value of iterable) {    console.log(value);  }  // Output:  // "E"  // "S"  // "6"}{  // 迭代數(shù)組  const iterable = ['a', 'b'];  for (const value of iterable) {    console.log(value);  }  // Output:  // a  // b}{  // 迭代Set(集合)  const iterable = new Set([1, 2, 2, 1]);  for (const value of iterable) {    console.log(value);  }  // Output:  // 1  // 2}{  // 迭代Map  const iterable = new Map([["a", 1], ["b", 2], ["c", 3]]);  for (const entry of iterable) {    console.log(entry);  }  // Output:  // ["a", 1]  // ["b", 2]  // ["c", 3]
for (const [key, value] of iterable) { console.log(value); } // Output: // 1 // 2 // 3}{ // 迭代Arguments Object(參數(shù)對(duì)象) function args() { for (const arg of arguments) { console.log(arg); } } args('a', 'b'); // Output: // a // b}{ // 迭代生成器 function* foo(){ yield 1; yield 2; yield 3; };
for (let o of foo()) { console.log(o); } // Output: // 1 // 2 // 3}

Uncaught TypeError: obj is not iterable

// 普通對(duì)象const obj = {  foo: 'value1',  bar: 'value2'}for(const item of obj){  console.log(item)}// Uncaught TypeError: obj is not iterable
可以看出,for of可以迭代大部分對(duì)象甚至字符串,卻不能遍歷普通對(duì)象。

如何用for...of迭代普通對(duì)象

通過(guò)前面的基本用法,我們知道,for...of可以迭代數(shù)組、Map等數(shù)據(jù)結(jié)構(gòu),順著這個(gè)思路,我們可以結(jié)合對(duì)象的Object.values()、Object.keys()、Object.entries()方法以及解構(gòu)賦值的知識(shí)來(lái)用for...of遍歷普通對(duì)象。
Object.values()、Object.keys()、Object.entries()用法及返回值
const obj = {  foo: 'value1',  bar: 'value2'}// 打印由value組成的數(shù)組console.log(Object.values(obj)) // ["value1", "value2"]
// 打印由key組成的數(shù)組console.log(Object.keys(obj)) // ["foo", "bar"]
// 打印由[key, value]組成的二維數(shù)組// copy(Object.entries(obj))可以把輸出結(jié)果直接拷貝到剪貼板,然后黏貼console.log(Object.entries(obj)) // [["foo","value1"],["bar","value2"]]
因?yàn)閒or...of可以迭代數(shù)組和Map,所以我們得到以下遍歷普通對(duì)象的方法。
const obj = {  foo: 'value1',  bar: 'value2'}// 方法一:使用for of迭代Object.entries(obj)形成的二維數(shù)組,利用解構(gòu)賦值得到valuefor(const [, value] of Object.entries(obj)){  console.log(value) // value1, value2}
// 方法二:Map// 普通對(duì)象轉(zhuǎn)Map// Map 可以接受一個(gè)數(shù)組作為參數(shù)。該數(shù)組的成員是一個(gè)個(gè)表示鍵值對(duì)的數(shù)組console.log(new Map(Object.entries(obj)))
// 遍歷普通對(duì)象生成的Mapfor(const [, value] of new Map(Object.entries(obj))){ console.log(value) // value1, value2}
// 方法三:繼續(xù)使用for infor(const key in obj){ console.log(obj[key]) // value1, value2}
{ // 方法四:將【類(lèi)數(shù)組(array-like)對(duì)象】轉(zhuǎn)換為數(shù)組 // 該對(duì)象需具有一個(gè) length 屬性,且其元素必須可以被索引。 const obj = { length: 3, // length是必須的,否則什么也不會(huì)打印 0: 'foo', 1: 'bar', 2: 'baz', a: 12 // 非數(shù)字屬性是不會(huì)打印的 }; const array = Array.from(obj); // ["foo", "bar", "baz"] for (const value of array) { console.log(value); } // Output: foo bar baz}{ // 方法五:給【類(lèi)數(shù)組】部署數(shù)組的[Symbol.iterator]方法【對(duì)普通字符串屬性對(duì)象無(wú)效】 const iterable = { 0: 'a', 1: 'b', 2: 'c', length: 3, [Symbol.iterator]: Array.prototype[Symbol.iterator] }; for (let item of iterable) { console.log(item); // 'a', 'b', 'c' }}

注意事項(xiàng)

有別于不可終止遍歷的forEach,for...of的循環(huán)可由break, throw, continue 或return終止,在這些情況下,迭代器關(guān)閉。
 const obj = {    foo: 'value1',    bar: 'value2',    baz: 'value3'  }  for(const [, value] of Object.entries(obj)){    if (value === 'value2') break // 不會(huì)再執(zhí)行下次迭代    console.log(value) // value1  };  [1,2].forEach(item => {      if(item == 1) break // Uncaught SyntaxError: Illegal break statement      console.log(item)  });  [1,2].forEach(item => {      if(item == 1) continue // Uncaught SyntaxError: Illegal continue statement: no surrounding iteration statement      console.log(item)  });  [1,2].forEach(item => {      if(item == 1) return // 仍然會(huì)繼續(xù)執(zhí)行下一次循環(huán),打印2      console.log(item) // 2  })
For…of 與 For…in對(duì)比
for...in 不僅枚舉數(shù)組聲明,它還從構(gòu)造函數(shù)的原型中查找繼承的非枚舉屬性;
for...of 不考慮構(gòu)造函數(shù)原型上的不可枚舉屬性(或者說(shuō)for...of語(yǔ)句遍歷可迭代對(duì)象定義要迭代的數(shù)據(jù)。);
for...of 更多用于特定的集合(如數(shù)組等對(duì)象),但不是所有對(duì)象都可被for...of迭代。
 Array.prototype.newArr = () => {};  Array.prototype.anotherNewArr = () => {};  const array = ['foo', 'bar', 'baz'];  for (const value in array) {     console.log(value); // 0 1 2 newArr anotherNewArr  }  for (const value of array) {     console.log(value); // 'foo', 'bar', 'baz'  }

普通對(duì)象為何不能被 for of 迭代

前面我們有提到一個(gè)詞叫“可迭代”數(shù)據(jù)結(jié)構(gòu),當(dāng)用for of迭代普通對(duì)象時(shí),也會(huì)報(bào)一個(gè)“not iterable”的錯(cuò)誤。
實(shí)際上,任何具有 Symbol.iterator 屬性的元素都是可迭代的。我們可以簡(jiǎn)單查看幾個(gè)可被for of迭代的對(duì)象,看看和普通對(duì)象有何不同:




可以看到,這些可被for of迭代的對(duì)象,都實(shí)現(xiàn)了一個(gè)Symbol(Symbol.iterator)方法,而普通對(duì)象沒(méi)有這個(gè)方法。
簡(jiǎn)單來(lái)說(shuō),for of 語(yǔ)句創(chuàng)建一個(gè)循環(huán)來(lái)迭代可迭代的對(duì)象,可迭代的對(duì)象內(nèi)部實(shí)現(xiàn)了Symbol.iterator方法,而普通對(duì)象沒(méi)有實(shí)現(xiàn)這一方法,所以普通對(duì)象是不可迭代的。


Iterator(遍歷器)

關(guān)于Iterator(遍歷器),可以參照阮一峰老師寫(xiě)的《ECMAScript 6 入門(mén)教程—異步遍歷器》教程。


簡(jiǎn)單來(lái)說(shuō),ES6 為了統(tǒng)一集合類(lèi)型數(shù)據(jù)結(jié)構(gòu)的處理,增加了 iterator 接口,供 for...of 使用,簡(jiǎn)化了不同結(jié)構(gòu)數(shù)據(jù)的處理。
而 iterator 的遍歷過(guò)程,則是類(lèi)似 Generator 的方式,迭代時(shí)不斷調(diào)用next方法,返回一個(gè)包含value(值)和done屬性(標(biāo)識(shí)是否遍歷結(jié)束)的對(duì)象。

如何實(shí)現(xiàn)Symbol.iterator方法,使普通對(duì)象可被 for of 迭代

依據(jù)上文的指引,我們先看看數(shù)組的Symbol.iterator接口:
const arr = [1,2,3];const iterator = arr[Symbol.iterator]();console.log(iterator.next()); // {value: 1, done: false}console.log(iterator.next()); // {value: 2, done: false}console.log(iterator.next()); // {value: 3, done: false}console.log(iterator.next()); // {value: undefined, done: true}
我們可以嘗試給普通對(duì)象實(shí)現(xiàn)一個(gè)Symbol.iterator接口:
// 普通對(duì)象const obj = {  foo: 'value1',  bar: 'value2',  [Symbol.iterator]() {    // 這里Object.keys不會(huì)獲取到Symbol.iterator屬性,原因見(jiàn)下文    const keys = Object.keys(obj);     let index = 0;    return {      next: () => {        if (index < keys.length) {          // 迭代結(jié)果 未結(jié)束          return {            value: this[keys[index++]],            done: false          };        } else {          // 迭代結(jié)果 結(jié)束          return { value: undefined, done: true };        }      }    };  }}for (const value of obj) {  console.log(value); // value1 value2};
上面給obj實(shí)現(xiàn)了Symbol.iterator接口后,我們甚至還可以像下面這樣把對(duì)象轉(zhuǎn)換成數(shù)組:
console.log([...obj]); // ["value1", "value2"]console.log([...{}]); // console.log is not iterable (cannot read property Symbol(Symbol.iterator))
我們給obj對(duì)象實(shí)現(xiàn)了一個(gè)Symbol.iterator接口,在此,有一點(diǎn)需要說(shuō)明的是,不用擔(dān)心[Symbol.iterator]屬性會(huì)被Object.keys()獲取到導(dǎo)致遍歷結(jié)果出錯(cuò),因?yàn)镾ymbol.iterator這樣的Symbol屬性,需要通過(guò)Object.getOwnPropertySymbols(obj)才能獲取,Object.getOwnPropertySymbols() 方法返回一個(gè)給定對(duì)象自身的所有 Symbol 屬性的數(shù)組。
有一些場(chǎng)合會(huì)默認(rèn)調(diào)用 Iterator 接口(即Symbol.iterator方法:
擴(kuò)展運(yùn)算符...:這提供了一種簡(jiǎn)便機(jī)制,可以將任何部署了 Iterator 接口的數(shù)據(jù)結(jié)構(gòu),轉(zhuǎn)為數(shù)組。也就是說(shuō),只要某個(gè)數(shù)據(jù)結(jié)構(gòu)部署了 Iterator 接口,就可以對(duì)它使用擴(kuò)展運(yùn)算符,將其轉(zhuǎn)為數(shù)組(毫不意外的,代碼[...{}]會(huì)報(bào)錯(cuò),而[...'123']會(huì)輸出數(shù)組['1','2','3'])。
數(shù)組和可迭代對(duì)象的解構(gòu)賦值(解構(gòu)是ES6提供的語(yǔ)法糖,其實(shí)內(nèi)在是針對(duì)可迭代對(duì)象的Iterator接口,通過(guò)遍歷器按順序獲取對(duì)應(yīng)的值進(jìn)行賦值。而普通對(duì)象解構(gòu)賦值的內(nèi)部機(jī)制,是先找到同名屬性,然后再賦給對(duì)應(yīng)的變量。);
yield*:_yield*后面跟的是一個(gè)可遍歷的結(jié)構(gòu),它會(huì)調(diào)用該結(jié)構(gòu)的遍歷器接口;
由于數(shù)組的遍歷會(huì)調(diào)用遍歷器接口,所以任何接受數(shù)組作為參數(shù)的場(chǎng)合,其實(shí)都調(diào)用;
字符串是一個(gè)類(lèi)似數(shù)組的對(duì)象,也原生具有Iterator接口,所以也可被for of迭代。

迭代器模式

迭代器模式提供了一種方法順序訪(fǎng)問(wèn)一個(gè)聚合對(duì)象中的各個(gè)元素,而又無(wú)需暴露該對(duì)象的內(nèi)部實(shí)現(xiàn),這樣既可以做到不暴露集合的內(nèi)部結(jié)構(gòu),又可讓外部代碼透明地訪(fǎng)問(wèn)集合內(nèi)部的數(shù)據(jù)。
迭代器模式為遍歷不同的集合結(jié)構(gòu)提供了一個(gè)統(tǒng)一的接口,從而支持同樣的算法在不同的集合結(jié)構(gòu)上進(jìn)行操作。
不難發(fā)現(xiàn),Symbol.iterator實(shí)現(xiàn)的就是一種迭代器模式。集合對(duì)象內(nèi)部實(shí)現(xiàn)了Symbol.iterator接口,供外部調(diào)用,而我們無(wú)需過(guò)多的關(guān)注集合對(duì)象內(nèi)部的結(jié)構(gòu),需要處理集合對(duì)象內(nèi)部的數(shù)據(jù)時(shí),我們通過(guò)for of調(diào)用Symbol.iterator接口即可。
比如針對(duì)前文普通對(duì)象的Symbol.iterator接口實(shí)現(xiàn)一節(jié)的代碼,如果我們對(duì)obj里面的數(shù)據(jù)結(jié)構(gòu)進(jìn)行了如下調(diào)整,那么,我們只需對(duì)應(yīng)的修改供外部迭代使用的Symbol.iterator接口,即可不影響外部迭代調(diào)用:
const obj = {  // 數(shù)據(jù)結(jié)構(gòu)調(diào)整  data: ['value1', 'value2'],  [Symbol.iterator]() {    let index = 0;    return {      next: () => {        if (index < this.data.length) {          // 迭代結(jié)果 未結(jié)束          return {            value: this.data[index++],            done: false          };        } else {          // 迭代結(jié)果 結(jié)束          return { value: undefined, done: true };        }      }    };  }}// 外部調(diào)用for (const value of obj) {  console.log(value); // value1 value2}
實(shí)際使用時(shí),我們可以把上面的Symbol.iterator提出來(lái)進(jìn)行單獨(dú)封裝,這樣就可以對(duì)一類(lèi)數(shù)據(jù)結(jié)構(gòu)進(jìn)行迭代操作了。
當(dāng)然,下面的代碼只是最簡(jiǎn)單的示例,你可以在此基礎(chǔ)上探究更多實(shí)用的技巧。
const obj1 = {  data: ['value1', 'value2']}const obj2 = {  data: [1, 2]}// 遍歷方法consoleEachData = (obj) => {  obj[Symbol.iterator] = () => {    let index = 0;    return {      next: () => {        if (index < obj.data.length) {          return {            value: obj.data[index++],            done: false          };        } else {          return { value: undefined, done: true };        }      }    };  }  for (const value of obj) {    console.log(value);  }}consoleEachData(obj1); // value1 value2consoleEachData(obj2); // 1  2

一點(diǎn)補(bǔ)充

在寫(xiě)這篇文章時(shí),有個(gè)問(wèn)題給我?guī)?lái)了困擾:原生object對(duì)象默認(rèn)沒(méi)有部署Iterator接口,即object不是一個(gè)可迭代對(duì)象。
對(duì)象的擴(kuò)展運(yùn)算符...等同于使用Object.assign()方法,這個(gè)比較好理解。那么,原生object對(duì)象的解構(gòu)賦值又是怎樣一種機(jī)制呢?
let aClone = { ...a };// 等同于let aClone = Object.assign({}, a);
有一種說(shuō)法是:ES6提供了Map數(shù)據(jù)結(jié)構(gòu),實(shí)際上原生object對(duì)象被解構(gòu)時(shí),會(huì)被當(dāng)作Map進(jìn)行解構(gòu)。關(guān)于這點(diǎn),大家有什么不同的觀(guān)點(diǎn)嗎?歡迎評(píng)論區(qū)一起探討。
同時(shí),ECMAScript后面又引入了異步迭代器for await...of 語(yǔ)句,該語(yǔ)句創(chuàng)建一個(gè)循環(huán),該循環(huán)遍歷異步可迭代對(duì)象以及同步可迭代對(duì)象,詳情可查看MDN:for-await...of。
??愛(ài)心三連擊

1.看到這里了就點(diǎn)個(gè)在看支持下吧,你的點(diǎn)贊,在看是我創(chuàng)作的動(dòng)力。

2.關(guān)注公眾號(hào)程序員成長(zhǎng)指北,回復(fù)「1」加入Node進(jìn)階交流群!「在這里有好多 Node 開(kāi)發(fā)者,會(huì)討論 Node 知識(shí),互相學(xué)習(xí)」!

3.也可添加微信【ikoala520】,一起成長(zhǎng)。

“在看轉(zhuǎn)發(fā)”是最大的支持

瀏覽 48
點(diǎn)贊
評(píng)論
收藏
分享

手機(jī)掃一掃分享

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

手機(jī)掃一掃分享

分享
舉報(bào)

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

国产秋霞理论久久久电影-婷婷色九月综合激情丁香-欧美在线观看乱妇视频-精品国avA久久久久久久-国产乱码精品一区二区三区亚洲人-欧美熟妇一区二区三区蜜桃视频 久色无码| 影音先锋日韩精品| 久操影视| 免费爱爱网站| 久草视| 日韩人妻丰满无码区A片| 亚洲最新在线观看| 国产无套免费网站69| 99在线免费观看视频| 麻豆911精一区二区| 日韩在线视频中文字幕| 狠狠网| 日韩av无码中文字幕| 亚洲精品久久久久avwww潮水| 91无码人妻传媒tv| 国产三级国产三级国产普通话| 大帝av| 波多野结衣亚洲| 国产精品夜夜爽3000| 国产99自拍| 人人色人人爱| 北岛玲丝袜办公室高跟| 成人黄网免费观看视频| 国产伊人自拍| 草久网| 国内操B电影| 一插菊花网| 色哟哟av| 伊人久久久久久久久久久| 精品成人一区二区三区| 国产三级性爱| 青娱乐91视频| 国产三级片在线观看| 日本免费不卡视频| 精品人妻一区二区三区浪潮在线| 日本一级婬片A片免费播放一 | 欧美日韩中文字幕在线观看| 一级黄片免费视频| 国内成人精品| 无码在线视频播放| 色欲亚洲| 五月丁香天堂| 小黄片免费在线观看| 国产乱码| 国产日韩欧美一区二区| 国产6区| 亚洲午夜免费视频| 国产18欠欠欠一区二区| 国产精品污www在线观看| 久久久婷婷| 精品一区二区三区四区五区六区| 91丨露脸丨熟女| 大香蕉综合网站| 怡红院AV| 天堂网av2025| 九色PORNY国产成人蝌蚪| 亚洲欧美天堂| 亚洲激情在线| 久久精品一区二区三区不卡牛牛 | 亚洲操逼图片| 婷婷狠狠| 全国男人的天堂网站| 青青草97国产精品麻豆| 国产成人精品无码片子的价格 | 国产超碰免费| 伊人久久免费视频| 久一在线| 江苏妇搡BBBB搡BBBB小说| 婷婷五月天电影网| 九九久久精品| 大香蕉大香蕉视频网| 日韩精品欧美一区二区三区| 久久午夜福利电影| 小黃片秘嗯嗯啊| 精品久久ai| 一级乱伦网站| 亚洲的天堂的αⅴ| 欧美老女人操逼视频| 亚洲日韩视频| 亚洲免费一级| 亚洲三级片免费观看| 日韩a电影| 五月天综合久久| 东京热高清无码| 撸一撸在线观看| 色色色色色欧美| 男人天堂手机在线| 午夜日屄| 成人在线免费视频观看| 欧美成人大片| 五月播播| 成人在线精品视频| A片视频播放| 国产又粗又大又爽91嫩草| 婷婷色在线观看| 无码一级A片| 自拍偷拍在线视频| 免费黄色视频网站大全| 蜜臀激情| 青娱乐网| 午夜特片| 亚洲婷婷小说| 伊人五月天激情| 五月丁香欧美综合| 六月丁香欧美综合| 性久久久久久久| 黑人大肉棒| 欧美日韩视频一区二区三区| 午夜福利资源| 婷婷色六月| 日韩无任何视频在线观看| 无码狠狠躁久久久久久久91 | 俺来了俺去也| 操东北老女人| 青青草五月天色婷婷丁香| 亚洲国产熟妇无码日韩| 蝌蚪窝在线视频观看| 操逼黄色视频| 亚洲一区二区三区在线视频| 大香蕉伊人丁香五月| 欧美日韩一级视频| 日韩成人一级片| 一级无码A片| 欧美在线一区二区| 日韩欧美一级视频| 日韩综合区| 国产精品999| 九色PORNY蝌蚪视频| 亚洲秘无码一区二区三区电影 | 国模吧一区| 久久中文字幕视频| 天天澡日日久| 成人黄色网| 国产精品色8| 久艹大香蕉| 亚洲高清视频一区| 中文字幕不卡+婷婷五月| 老妇槡BBBB槡BBBB槡| 强伦人妻一区二区三区视频| 成人av网站在线播放| 久久久久综合| 久久精品苍井空免费一区二| 欧美色女人| 亚洲国产精品久久久久婷婷老年| 中文字幕+乱码+中文乱码www | 国产尤物在线观看| 中文字幕高清免费看| 色444| 成人欧美在线观看| 少妇搡BBBB搡BBB搡小说| 日韩激情无码视频精选| 天堂中文在线观看| 91女人18片女毛片60分钟| 人妻无码一区二区三区| 国产精品2| 在线第一页| 最新国产视频| 久操视频免费看| 一区二区国产视频| 成人三级AV在线| 日本免费一级片| 一级全黄120分钟免费| 人人上人人摸| 日韩无码福利| 国产精品自拍一区| 日本韩国叼嘿片| 人人操操| 婷婷色在线视频| 人人射人人爱| 无码不卡中文字幕| 国产超级无码高清在线视频观看 | 影音先锋三区| 日韩在线观看视频免费| 国产精品免费久久影院| 国产乱伦免费| 亚洲无aV在线中文字幕| 日韩精品一区二区三区中文在线| 国产TS变态重口人妖| 国产午夜精品视频| 青青草原在线视频| 黑人操逼视频| 青娱乐偷拍视频| 一级A片一毛片大全| 尤物在线| 黄片无码免费观看| 无码秘蜜桃吴梦梦| 日韩久久精品视频| 成人免费视频网站| 日韩最新无码发布| 搞搞电影91| 怡春院综合成人社区| 操逼在线观看| 国精产品一区二区三区黑人和中国 | 北条麻妃无码精品AV| 强奸乱伦制服丝袜| 亚洲AV无码成人精品区欧洲| 91网站免费在线观看| 亚洲黄色视频网站在线观看| 一级特黄妇女高潮AA片免费播放| 亚洲精品观看| 狠狠2021| 亚洲中字幕| 黄色成人大片| 亚洲国产综合AV在线| 麻豆蜜桃91无码| 日操操| 午夜福利av在线| 久久人妻免费视频| 人人妻人人澡人人爽久久con| 91午夜福利| 午夜爽爽| 五月丁香| 中文字幕AV在线播放| 麻豆乱码国产一区二区三区| 国产AV一级片| 一级无码视频| 国产精品日韩无码| 国产中文视频| 国产成人精品123区免费视频 | 狼友视频免费在线观看| 黄色三级A片| 91人人妻人人爽| 国产精品香蕉国产| 天天天做夜夜夜爽无码| 欧美AAA黄片| 青娱乐国产av| 蜜桃人妻无码| 99久久久无码国产精品性波多| 男女AV网站| 黄色在线播放| 日韩五码在线| 91伊人| 永久免费黄色视频| 久久婷婷网| 日本爱爱免费| 色综合一区二区三区| 337p大胆色噜噜噜噜噜| 九九性爱视频| 豆花成人视频| 亚洲精品区| 91精品婷婷国产综合久久| 国产学生妹| 成年人视频在线免费观看| 簧片网站在线观看| 操逼福利| 精品1234| 日韩色| 精品视频久久| 成人网肏逼视频| 日本久久人体视频| 靠逼国产| 肏屄综合网| 另类老妇极品BBWBBw| 色婷婷av在线| 日本天天操| 日本综合久久| 日韩一区无码| 国产欧美一区二区| 懂色成人av影院| 无码xx| 女人18片毛片60分钟翻译| 国精品无码人妻一区二区三区| 久久大香蕉网| 中文子幕免费毛片| 国产乱子伦视频国产印度| AV一级片| 精品无码一区二区三区爱与| 天堂素人约啪| 七区九区一区在线| 91涩| 韩国精品在线观看| 天天看天天日| 无码精品视频| 91麻豆福利在线观看| 在线观看免费黄视频| 综合AV在线| 色欲影音| 国产真实乱婬A片三区高清蜜臀| 重庆美女揉BBBB搡BBBB| 天天天天干| 三级黄色免费| www在线视频| 国产精品福利导航| 操骚屄视频| 少妇搡BBBB搡BBBB毛多多| 亚洲一区二区三区在线++中国 | 婷婷久久综合| 中文字幕日韩欧美在线| 欧美一级黃色A片免费看蜜桃熟了| 香蕉视频成人在线| 婷婷五月天成人电影| 午夜天堂精品久久久久| 久久久久久亚洲精品| 丁香五月在线播放| 自拍成人视频| 中日韩一级片| 中文字幕高清在线中文字幕中文字幕| 欧美三级欧美一级| 国产无套进入免费| 粉粉嫩嫩的18虎白女| 乱伦自拍| 国产成人精品一区二区三区四区| 日韩亚洲在线观看| www.91n| 亚洲黄色电影在线观看| 天天日天天干天天爽| 乱子伦国产精品视频一级毛| 国产午夜在线观看| 国产精品一麻了麻了| 动漫操逼视频| anwuye官方网站| 婷婷伊人綜合中文字幕| 暗呦罗莉精品一区二区| 97色色网站| 中文字幕乱码中文字幕| 一级免费视频| 色哟哟一区二区三区四区| 天天天天天天天操| 五月婷婷亚洲| 视色视频在线观看| 国产成人无码精品一区秘二区| av岛国免费| 亚洲一级二级三级| 91三级片在线播放| 久草福利网| 亚洲天堂在线视频观看| 国产午夜福利免费视频在线观看| 性爱一级| 亚洲无码在| 久久久久久一区| 亚洲无码视频专区| 黄色在线免费观看| 久久精品三级视频| 91在线无码精品秘入口男同| 91免费网站| av影音先锋| 再深点好爽灬轻点久久国产| 91免费观看视频| 欧美性爱第四页| 人妻黄色视频| 99在线免费观看视频| 西西人体444www| 男人亚洲天堂| 国产一级黄片| 国内精品久久久久久久久久| 高清AV无码| 成人a片在线免费观看| 成人免费视频国产在线观看| 苍井空无码| 久久久老熟女一区二区三区91| 在线无码不卡| 偷窥美鲍| 2025最新国产成人精品| 国产色AV| 高清无码内射视频| 亚洲精品在线看| 91丨豆花丨成人熟女| 极品av| 久久久久久久久久久高清毛片一级 | 多啪啪免费视频| 狠狠撸在线视频| 西西888WWW大胆视频| 微熟女导航| 成人午夜精品福利免费| 国产成人精品无码区在线| 热无码| 男女性爱视频网站| 97国产免费| 色五月婷婷五月天激情| 偷拍亚洲色图| 五月婷婷影院| 久久精彩免费视频| 北条麻妃无码观看| 中文字幕av网站| 五月天伊人| 日韩色小说| 热久久9| 久久精品免费看| 日本视频一区二区| 五月天激情午夜福利| 欧美后门菊门交3p| 亚洲视频免费在线观看| 国产精品高| 欧美999| 精品一区二区三区四区五区六区| 久草网站| www免费视频在线观看播放| 色婷婷丁香五月| 国产美女在线播放| 你懂的在线视频| 天天日天天操天天摸天天干天日射天天插 | 又黄又湿的视频| 日韩无码免费视频| 少妇厨房愉情理伦BD在线观看| 在线播放中文字幕| 国产亚洲天堂| 色人阁人妻中文字幕| 欧美一级久久| 亚洲有码人妻| 色天天综合| 国产精品一级A片| 777免费视频| 动漫操逼视频| 五月综合色| 美女裸身18禁| 久草91| 操逼逼网站| 国产婷婷久久Av免费高清| 麻豆黄色片| AV无码毛片| 日本成人精品| 99高清国产| 波多野结衣视频网站| 黄在线| 黑人干亚洲人| 91人妻人人人人爽| 天天操人人射| 毛片国产| 亚洲AV播放| 新超碰在线观看| 欧美一级特黄A片免费看| 激情五月婷婷网| 久久精品国产视频| www.中文无码| 91丨牛牛丨国产人妻| 热久久中文字幕| 久久久久久久久黄色| 成人亚洲| 操逼福利视频| 欧美性爱日韩| 肏屄免费视频| 五月丁香视频在线观看| 人人干人人操人人爱| 视色av| 亚洲无码av中文字幕| 日本特级黄色毛片| 大香蕉在线伊| 黄色AV免费观看| 韩国高清无码| 插插插视频| 午夜试看120秒体验区的特点| 在线观看免费黄色视频| 日韩a片在线观看| 强行征服邻居人妻HD高清日本| AV解说| 天天操夜| 精品啪啪| 日本一区二区三| 一级a一级a爱片免费视频| 另类性爱视频| 婷婷五月天在线电影| 国产三级黄片| 日韩特一级| 大香蕉伊人手机在线| 天堂一区二区三区| 成年人黄色电影| 超碰人人爱人人操| 亚洲中文字幕av天堂| 日韩乱伦电影| 97色色婷婷| 青青草视频免费在线观看| 麻豆乱伦| 无码狠狠躁久久久久久久91 | 免费+无码+精品| AV在线免费播放| 91久久久久国产一区二区| 吃奶做爱视频| 国产在线一二三| 少妇搡BBBB搡BBB搡澳门| 日本毛片在线观看| 男人的天堂一区| 影音先锋中文字幕资源| 日韩黄色一级视频| 四川少妇BBBB| 国产91久久婷婷一区二区| 99热碰碰热| 日韩人妻精品无码久久| 欧美疯狂做受XXXXX高潮| 青青草小视频| 色就是亚洲| 殴美亚洲一流| 亚洲精品蜜桃| 操逼网国产| 99re66| 黄色网址在线观看视频| 2015中文字幕黄色视频| 色婷婷一区| 欧美成人视屏| 骚逼综合网| 人人操人人上| 人妻公日日澡久久久| 黄色片在线免费观看| 69式荫蒂被添全过程频| 婷婷丁香一区二区三区| 亚洲丝袜av| 国产美女被| 一级大黄色毛片| 成人免费三级片| 国产精品成人无码a无码| 免费无码婬片AAAA片老婦| 亚洲免费大片| 亚洲中文字幕无码爆乳av| 中文字幕色情| 久久久亚洲无码| 强辱丰满人妻HD中文字幕| 人人摸人人插| 人人操国产| 免费在线观看视频a| 无码任你操| 俺来了俺去了www色官网| 国产成人久久777777黄蓉| 大香蕉在线精品视频| 日韩操B视频| 高清亚洲| 亚洲大片在线观看| 台湾精品一区二区三区| 大香蕉亚洲网| 操一操干一干| 丰满人妻一区二区三区视频在线不卡| www.欧美| 大香蕉久久草| 无码精品人妻一区二区三刘亦菲| 久99视频| 国产操美女| 六月婷婷中文字幕| 亚洲AV成人网| 亚洲a在线视频| 亚洲AV色香蕉一区二区三区| 欧美午夜精品久久久| 久久久久99精品成人片欧美一区| 大香蕉中文在线| 亚洲精品蜜桃| 日韩AV高清| 欧美午夜网站| 日韩免费在线观看视频| www.6969成人片亚洲| 91人妻人人| 超碰97在线免费| 午夜专区| 成人欧美一区二区三区在线观看 | 91香蕉视频免费在线观看| 天堂a√在线8| 骚网站在线观看| 欧美人妻无码| 男人天堂免费视频| 久久久久久五月天| 后入av| 成人黄网站免费视频| 亚洲精品影视| 国产乱子伦一区二区三区免看| 国产精品人妻无码久久久郑州天气网 | 学生妹一级J人片内射视频| 91色婷婷综合久久中文字幕二区| 俺来也俺就去www色情网| 国产丝袜视频| 国产精品片| 日日干日日| 成人在线一区二区| 在线日韩视频| 欧美老妇性猛交| 国产人人干| 麻豆一区| 特黄AAAAAAAA片视频| 久久无码黄片| 在线观看毛片网站| 中文亚洲精品字幕电影| 久久久久亚洲AV成人片乱码| 1024香蕉视频| 国产有码在线观看| 青青草原免费在线视频| 国产精品国产精品国产专区不52| 中文无码观看| 国产亚洲天堂| 超碰在线网站| 一本大道DVD中文字幕| 午夜高清无码视频| 成人AAA| 国产日批| 人人操在线公开| 日本黄色的视频| 欧美色图亚洲另类| 影音先锋AV无码| 亚洲熟女一区二区| 国产av一区二区三区四区| 成年女人免费视频| 国产A片免费观看| 高清国产mv在线观看| 成人激情在线| 欧美国产日韩综合在线观看170| 欧洲肥胖BBBBBBBBBB| 国产福利美女网站| 吃奶做爱视频| 99er在线| 亚洲日韩欧美视频| 日韩无码AV电影| 日韩视频中文字幕| 亚洲精品mv| 亚洲av免费| 日本中文字幕无码| 亚洲天堂中文| 操逼网国产| 精品蜜桃秘一区二区三区在线播放| 久久综合在线| 欧美国产第一页| 中国精品77777777| 久9久9久9久9久9久9| 亚洲日本中文字幕在线观看| 成人亚洲精品一区二区三区| 波多野结衣无码NET,AV| 午夜成人福利在线观看| 国产18欠欠欠一区二区| 国产无码AV大片| 西西444www大胆高清图片| 黄色在线| 丰满人妻一区二区三区| 草逼免费视频| 熟女无码| 亚洲秘无码一区二区三区观看| 国产A片免费看| 欧美不卡| 亚洲一级Av无码毛片久久精品| 欧美级毛片一进一出| 国内自拍视频在线观看| 亚洲中文无码字幕| 97人妻无码一区二区| 精品一区二区视频| 69成人精品国产| 东京热AV在线| 久久精品成人电影| 蜜桃传媒一区| 免费视频| 日韩欧美性爱| 天天干,夜夜操| 99啪啪| 日本成人中文字幕| 午夜福利院| 婷婷三区| 免费黄片视频| 少妇厨房愉情理伦BD在线观| 亚洲美女视频网| 16一17女人毛片| 欧美一级日韩三级| 青青草原视频在线免费观看| www.seses| 蜜桃视频成人版网站| 波多野结衣99| 91新婚人妻偷拍| 91精品国产乱码久久久| 一级视频免费观看| 91精品国产一区| 国产精品视频久久久久| 二区三区无码| 干少妇视频| 国产亚洲婷婷| 在线观看黄色视频网站| 欧美一页| 99在线视频免费观看| 操逼视频免费在线观看| 日韩无码视屏| 人人操美女| 中文字幕99页| 大香蕉综合视频| 国产人人爽| 99久操| 久9久9| 影音先锋一区二区三区| 亚洲中文字幕有码| 欧美日韩三级片| 操逼在线观看| 91精品在线播放| 五夜福利成人视频| 国产精品欧美综合在线| 91国产视频在线播放| 日韩欧美国产黄色电影| 女公务员人妻呻吟求饶| 亚洲性图第一页| 日韩成人无码影片| 欧洲AV片| 国产精品视频色| 淫香淫色天天影视| 亚洲社区在线观看| 一级午夜| 人妻无码一区二区| 视色影院| 日本A片免费看| 最新无码视频| 熟妇一区| 日本Sm/调教/捆绑/紧缚| 婷婷导航| 日韩免费在线视频观看| www.久久网| 亚洲视频入口| 人妻黄色| 黄片网址大全| 12—13女人毛片毛片| 99久久精品国产一区二区成人| 亚洲欧美成人电影| 三级片在线网站| 91色噜噜狠狠色婷婷| 国产性爱av| 日韩视频在线免费观看| 亚洲中字幕新| 黄片高清免费观看| 影音先锋女人资源| 999福利视频| 夜夜干天天操| av无码一区二区| 成人动漫在线观看| 呦小BBBB小小BBBB| 欧美中文字幕在线视频| AV电影在线观看| 中文人妻| 亚洲高清无码播放| 97超碰网| 爱爱综合| 黄色一级片免费观看| 日韩欧美在线不卡| 国产一级a毛一级a毛观看视频网站 | 亚洲中文字幕免费在线观看| 男人在线天堂| 亚洲精品无码久久久| 操碰视频| 国产激情在线| 操b视频免费看| 91视频首页| 中文字幕免费在线观看视频| 国产一a毛一a免费观看| 亚洲国产成人91PORN| 欧美三级欧美成人高清| 东方AV在线观看| 国产小视频在线| 午夜成人三级| 五月丁香天堂| 狠狠2021| 免费黄色欧美| 一区二区成人电影| www.五月婷婷| 国产黄色免费看| 久久精品视频观看| 天天干狠狠| 日本黄色免费在线观看| 在线观看视频免费无码免费视频| 黑人大荫蒂女同互磨| 日韩欧美在线免费观看| 看毛片网站| 人妻丝袜蕾丝高跟双飞| 日韩在线观看免| 久一久久| 插菊花综合网站| 日韩AV高清| www.黄片| 18禁网站在线看| 欧美一级片免费观看| 成人小说视频| ppypp电影频道| 亚洲人妻在线视频| 久久福利| 亚洲三级自拍| 国产三级片91| 久操欧美| 亚洲国产精品久久| 日韩中文在线观看| 成人精品网| 久久毛片基地| 香蕉视频毛片| 国产A片免费观看| 国产成人AV片| 亚州精品国产精品乱码不99勇敢| 五月黄片| 91麻豆精品无码人妻| 亚洲黄色视频免费看| 囯产精品久久久久久久久久| 国产一级黄片| 婷婷丁香五月花| 成人免费乱码大片a毛片蜜芽| 久久亚洲综合| 婷婷五月视频| 青青草原在线视频| 亚洲五月六月| 国产精品毛片视频| 五月婷婷网站| 俺去俺来也www色视频| 欧美视频综合| 操鸡视频在线观看| 婷婷丁香一区二区三区| av水果派| 女侠吕四娘第二部| 色婷婷欧美在线播放内射| 可以免费看av的网站| 欧美v| 91高清视频| 日韩人妻午夜| 青青久视频| 亚洲天堂精品视频| 国精品91无码一区二区三区在线 | 国产欧美综合三级伦| 色乱视频| 殴美A片| A∨无码免费| 亚洲国产成人精品女人久久| 国产三级片无码| 日老女人逼| 甘肃WBBBB搡wBBBB| 91视频在线免费观看app| 久久精品一二三| 色色资源网| 国产一级视频| 国产成人电影一区二区| 在线观看视频无码| 日韩欧美高清第一期| 欧美日韩在线免费观看| 中国老熟女2老女人| 欧美日韩精品一区二区三区视频播放| 日本成人精品| 国产黄色视频在线观看| 中文字幕五月天| 成人性爱在线播放| 91新视频| 操逼逼AV| 三级爱爱| 小黄片在线看| 麻豆回家视频区一区二| 国产1区在线观看| 91人妻人人澡人人爽人人爽| 国产无套视频| 女人特级毛片18| 成人精品一区日本无码网站suv/| 影音先锋天堂网| 欧美日韩国产精品| 人妻无码在线观看| 亚洲色欲av| 国产精品国产精品国产专区不片| 日韩大尺度Av| 超碰成人欧美| 九九热在线精品| 丁香五月天婷婷| 久久久无码AV| 在线观看av网站| 国产乱码一区二区三区四区在线| 99精品欲| 操逼爽| 亚洲精品婷婷| 性做久久久久久久久| 成人777777免费视频色| 国产无遮挡A片又黄又爽小直播 | 精品无码一区二区三区四区五区| 日韩中文字幕精品| 99re热| 天堂8在线19| av无码精品一区| 91亚洲国产成人精品一区| 中文字幕不卡AV在线观看| 国产精品国产三级囯产普通话2 | 天a堂8在线www| 日韩精品一| 亚洲精品无码a片| 奇米色色| 亚洲美女视频网| 51国产黑料吃瓜在线入口| 日本操B| 天天澡日日久| 家庭乱伦av| 男女日逼视频| 夜夜精品视频| 国产操美女| 人妻无码| 日本一级特级毛片视频| 91欧美在线| 麻豆免费版在线观看| 国产女人在线视频| 免费网站观看www在线观看| 中文AV第一页| 99免费在线视频| 欧美视频免费在线观看| www超碰在线| 国产av网站大全| 久久高清无码视频| 国产免费性爱视频| 天天操天天操天天操天天操| 影音先锋一区二区三区| 狠狠干2022| 国产高清无码一区二区| 青草伊人av| 精品一区二区三区四| 亚洲免费黄色| 午夜成人黄色| 少妇高潮喷水视频| 午夜成人福利电影| A级黄色毛片| 爱爱爱免费视频| 人人操人人爱人人拍| 影音先锋av在线资源| 九九这里有精品| 亚洲精品A片| 超碰人人爱国产视| 777AV| 少妇搡BBBB搡BBB搡小说| 国产高清免费| 亚洲一级av无码毛片精品| 国产成人AV在线观看|