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

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

共 5704字,需瀏覽 12分鐘

 ·

2020-12-13 05:58

作者:孤篷
來源:SegmentFault 思否社區(qū)



for…of?及其使用


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


for...of的語法:


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


常用用法


{
??//?迭代字符串
??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ù)對象)
??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


//?普通對象
const?obj?=?{
??foo:?'value1',
??bar:?'value2'
}
for(const?item?of?obj){
??console.log(item)
}
//?Uncaught?TypeError:?obj?is?not?iterable


可以看出,for of可以迭代大部分對象甚至字符串,卻不能遍歷普通對象。


如何用for...of迭代普通對象


通過前面的基本用法,我們知道,for...of可以迭代數(shù)組、Map等數(shù)據(jù)結(jié)構(gòu),順著這個(gè)思路,我們可以結(jié)合對象的Object.values()、Object.keys()、Object.entries()方法以及解構(gòu)賦值的知識來用for...of遍歷普通對象。


  • 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,所以我們得到以下遍歷普通對象的方法

const?obj?=?{
??foo:?'value1',
??bar:?'value2'
}
//?方法一:使用for?of迭代Object.entries(obj)形成的二維數(shù)組,利用解構(gòu)賦值得到value
for(const?[,?value]?of?Object.entries(obj)){
??console.log(value)?//?value1,?value2
}

//?方法二:Map
//?普通對象轉(zhuǎn)Map
// Map 可以接受一個(gè)數(shù)組作為參數(shù)。該數(shù)組的成員是一個(gè)個(gè)表示鍵值對的數(shù)組
console.log(new?Map(Object.entries(obj)))

//?遍歷普通對象生成的Map
for(const?[,?value]?of?new?Map(Object.entries(obj))){
??console.log(value)?//?value1,?value2
}

//?方法三:繼續(xù)使用for?in
for(const?key?in?obj){
??console.log(obj[key])?//?value1,?value2
}

{
??//?方法四:將【類數(shù)組(array-like)對象】轉(zhuǎn)換為數(shù)組
??//?該對象需具有一個(gè) length 屬性,且其元素必須可以被索引。
??const?obj?=?{
????length:?3,?//?length是必須的,否則什么也不會打印
????0:?'foo',
????1:?'bar',
????2:?'baz',
????a:?12??//?非數(shù)字屬性是不會打印的
??};
??const?array?=?Array.from(obj);?//?["foo",?"bar",?"baz"]
??for?(const?value?of?array)?{?
??????console.log(value);
??}
??//?Output:?foo?bar?baz
}
{
??//?方法五:給【類數(shù)組】部署數(shù)組的[Symbol.iterator]方法【對普通字符串屬性對象無效】
??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?//?不會再執(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?//?仍然會繼續(xù)執(zhí)行下一次循環(huán),打印2
??????console.log(item)?//?2
??})

  • For…of?與?For…in對比


    • for...in 不僅枚舉數(shù)組聲明,它還從構(gòu)造函數(shù)的原型中查找繼承的非枚舉屬性;
    • for...of 不考慮構(gòu)造函數(shù)原型上的不可枚舉屬性(或者說for...of語句遍歷可迭代對象定義要迭代的數(shù)據(jù)。);
    • for...of 更多用于特定的集合(如數(shù)組等對象),但不是所有對象都可被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'
??}



普通對象為何不能被?for of?迭代


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


可以看到,這些可被for of迭代的對象,都實(shí)現(xiàn)了一個(gè)Symbol(Symbol.iterator)方法,而普通對象沒有這個(gè)方法。

簡單來說,for of 語句創(chuàng)建一個(gè)循環(huán)來迭代可迭代的對象,可迭代的對象內(nèi)部實(shí)現(xiàn)了Symbol.iterator方法,而普通對象沒有實(shí)現(xiàn)這一方法,所以普通對象是不可迭代的。



Iterator(遍歷器)


關(guān)于Iterator(遍歷器)的概念,可以參照阮一峰大大的《ECMAScript 6 入門》——Iterator(遍歷器)的概念:


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



如何實(shí)現(xiàn)Symbol.iterator方法,使普通對象可被?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}

我們可以嘗試給普通對象實(shí)現(xiàn)一個(gè)Symbol.iterator接口:

//?普通對象
const?obj?=?{
??foo:?'value1',
??bar:?'value2',
??[Symbol.iterator]()?{
????//?這里Object.keys不會獲取到Symbol.iterator屬性,原因見下文
????const?keys?=?Object.keys(obj);?
????let?index?=?0;
????return?{
??????next:?()?=>?{
????????if?(index???????????//?迭代結(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接口后,我們甚至還可以像下面這樣把對象轉(zhuǎn)換成數(shù)組:

console.log([...obj]);?//?["value1",?"value2"]
console.log([...{}]);?//?console.log?is?not?iterable?(cannot?read?property?Symbol(Symbol.iterator))

我們給obj對象實(shí)現(xiàn)了一個(gè)Symbol.iterator接口,在此,有一點(diǎn)需要說明的是,不用擔(dān)心[Symbol.iterator]屬性會被Object.keys()獲取到導(dǎo)致遍歷結(jié)果出錯(cuò),因?yàn)镾ymbol.iterator這樣的Symbol屬性,需要通過Object.getOwnPropertySymbols(obj)才能獲取,Object.getOwnPropertySymbols()?方法返回一個(gè)給定對象自身的所有 Symbol 屬性的數(shù)組。

??有一些場合會默認(rèn)調(diào)用 Iterator 接口(即Symbol.iterator方法:

  • 擴(kuò)展運(yùn)算符...:這提供了一種簡便機(jī)制,可以將任何部署了 Iterator 接口的數(shù)據(jù)結(jié)構(gòu),轉(zhuǎn)為數(shù)組。也就是說,只要某個(gè)數(shù)據(jù)結(jié)構(gòu)部署了 Iterator 接口,就可以對它使用擴(kuò)展運(yùn)算符,將其轉(zhuǎn)為數(shù)組(毫不意外的,代碼[...{}]會報(bào)錯(cuò),而[...'123']會輸出數(shù)組['1','2','3'])。
  • 數(shù)組和可迭代對象的解構(gòu)賦值(解構(gòu)是ES6提供的語法糖,其實(shí)內(nèi)在是針對可迭代對象的Iterator接口,通過遍歷器按順序獲取對應(yīng)的值進(jìn)行賦值。而普通對象解構(gòu)賦值的內(nèi)部機(jī)制,是先找到同名屬性,然后再賦給對應(yīng)的變量。);
  • yield*:_yield*后面跟的是一個(gè)可遍歷的結(jié)構(gòu),它會調(diào)用該結(jié)構(gòu)的遍歷器接口;
  • 由于數(shù)組的遍歷會調(diào)用遍歷器接口,所以任何接受數(shù)組作為參數(shù)的場合,其實(shí)都調(diào)用;
  • 字符串是一個(gè)類似數(shù)組的對象,也原生具有Iterator接口,所以也可被for of迭代。



迭代器模式


迭代器模式提供了一種方法順序訪問一個(gè)聚合對象中的各個(gè)元素,而又無需暴露該對象的內(nèi)部實(shí)現(xiàn),這樣既可以做到不暴露集合的內(nèi)部結(jié)構(gòu),又可讓外部代碼透明地訪問集合內(nèi)部的數(shù)據(jù)。迭代器模式為遍歷不同的集合結(jié)構(gòu)提供了一個(gè)統(tǒng)一的接口,從而支持同樣的算法在不同的集合結(jié)構(gòu)上進(jìn)行操作。

不難發(fā)現(xiàn),Symbol.iterator實(shí)現(xiàn)的就是一種迭代器模式。集合對象內(nèi)部實(shí)現(xiàn)了Symbol.iterator接口,供外部調(diào)用,而我們無需過多的關(guān)注集合對象內(nèi)部的結(jié)構(gòu),需要處理集合對象內(nèi)部的數(shù)據(jù)時(shí),我們通過for of調(diào)用Symbol.iterator接口即可。

比如針對前文普通對象的Symbol.iterator接口實(shí)現(xiàn)一節(jié)的代碼,如果我們對obj里面的數(shù)據(jù)結(jié)構(gòu)進(jìn)行了如下調(diào)整,那么,我們只需對應(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???????????//?迭代結(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提出來進(jìn)行單獨(dú)封裝,這樣就可以對一類數(shù)據(jù)結(jié)構(gòu)進(jìn)行迭代操作了。當(dāng)然,下面的代碼只是最簡單的示例,你可以在此基礎(chǔ)上探究更多實(shí)用的技巧。

const?obj1?=?{
??data:?['value1',?'value2']
}
const?obj2?=?{
??data:?[1,?2]
}
//?遍歷方法
consoleEachData?=?(obj)?=>?{
??obj[Symbol.iterator]?=?()?=>?{
????let?index?=?0;
????return?{
??????next:?()?=>?{
????????if?(index???????????return?{
????????????value:?obj.data[index++],
????????????done:?false
??????????};
????????}?else?{
??????????return?{?value:?undefined,?done:?true?};
????????}
??????}
????};
??}
??for?(const?value?of?obj)?{
????console.log(value);
??}
}
consoleEachData(obj1);?//?value1?value2
consoleEachData(obj2);?//?1??2



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


在寫這篇文章時(shí),有個(gè)問題給我?guī)砹死_:原生object對象默認(rèn)沒有部署Iterator接口,即object不是一個(gè)可迭代對象。對象的擴(kuò)展運(yùn)算符...等同于使用Object.assign()方法,這個(gè)比較好理解。那么,原生object對象的解構(gòu)賦值又是怎樣一種機(jī)制呢?

let?aClone?=?{?...a?};
//?等同于
let?aClone?=?Object.assign({},?a);

有一種說法是:ES6提供了Map數(shù)據(jù)結(jié)構(gòu),實(shí)際上原生object對象被解構(gòu)時(shí),會被當(dāng)作Map進(jìn)行解構(gòu)。關(guān)于這點(diǎn),大家有什么不同的觀點(diǎn)嗎?歡迎評論區(qū)一起探討。



點(diǎn)擊左下角閱讀原文,到?SegmentFault 思否社區(qū)?和文章作者展開更多互動和交流。

-?END -

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

手機(jī)掃一掃分享

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

手機(jī)掃一掃分享

分享
舉報(bào)

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

国产秋霞理论久久久电影-婷婷色九月综合激情丁香-欧美在线观看乱妇视频-精品国avA久久久久久久-国产乱码精品一区二区三区亚洲人-欧美熟妇一区二区三区蜜桃视频 日韩无码视频一区| 久久国产精品一区二区三区| 久久久无码视频| 国产av黄色| 成人无码www在线看免费| 插丰满少妇在线观看| 五月亚洲六月婷婷| 人人爱人人干人人操| 日本黄色视频大全| 日韩三级片无码| 影音AV| 波多野结衣网址| 败火老熟女ThePorn视频| 亚洲精品色婷婷| 一级黄色性爱视频| 欧美精品18| 国产理论| 欧美洲成人网站| 起碰视频| 777777国产7777777| 午夜电影无码| 成人黄色大片| 在线观看免费黄视频| 无码免费在线观看视频| 亚洲欧洲日韩| 日韩做爱视频| 中文字幕第一页亚洲| 精品久久免费视频| 精品999| 日韩不卡在线| 亚洲操逼图片| 五月婷婷婷婷| 色诱av| 欧美激情四射老司机| av一区在线| 影音先锋成人无码| 久久五月天婷婷| 日本一级婬片A片免费看| 日本黄色电影在线播放| 精品国产三级片| 青青国产| 嫩BBB槡BBBB槡BBBB| 黄网在线播放| 精品国产无码怀孕| 免费欧美三级片| 国产成人无码一区二区在线观看 | 国产免费AV在线| 大橡胶伊人网| 欧美成人手机在线看片| 中文字幕第12页| 在线观看日韩三级片av| 97爱爱网| 人人澡人人添人人爽人人| AV在线资源| 日韩字幕无码| 欧美成人三级在线| 懂色av一区蜜桃| 日韩毛片大全| 免费a片视频| 日韩精品一区二区三区免费观看高清| 国产又爽又黄网站免费观看 | A免费在线观看| 国产日韩一区| 国产精品怡红院有限公司| 丁香AV| 免费a视频在线观看| www.zaixianshipin| 尤物网站在线观看| 欧美视频精品| 九九天堂网| 亚洲日韩欧美一区二区天天天| 天天日综合| 大地资源第5页在线| 久久久无码视频| 国产香蕉视屏| 老师搡BBBB搡BBB| 蜜桃传媒一区| 国产极品无码| 超碰人人插| 亚洲无码视频在线观看高清| 色色色欧美| 一本色道久久加勒比精品| 色五月婷婷小说| 免费视频一区二区三区四区| 亚洲va在线∨a天堂va欧美va | 波多野结衣视频在线观看| AV无码在线免费观看| 日韩毛片| 日本理论片一道本| 久久69| jlzz18| 免费A片国产毛无码A片| 男人天堂亚洲| 国产黄片网站| 中文字幕成人在线播放| 亚洲综合在线网| 日韩三级中文| 日日爽| 长腿女神打扫偷懒被主人猛操惩罚 | 人人操碰成人网| 韩国人妻无码| www.cao| 7799综合| 久久一级片| 天天成人| 搡BBBB推BBBB推BBBB| 亚洲自拍中文字幕| 亚洲激情在线| 91视频在线网站| 日韩精品在线视频| 搡老熟女-91Porn| 悠悠无码一区日韩妇女| 亚洲精品国偷拍自产在线观看蜜桃| 天天日天天射天天操| 黄色片在线免费观看| 99热7| www.日本黄色视频| 国产精品二| 先锋影音av资源站| JULIA超乳JULIA无码| 九九热av| 91丨九色丨熟女丰满| 欧美日韩视频在线播放| 久久国产综合| 亚洲香蕉在线观看| 久久午夜视频| 日韩一级免费视频| 大香蕉伊在线观看| 日韩精品视频在线| 日韩一级A片| 麻豆精东一区二区欧美国产| 国产91人| 天天摸天天添| 婷婷五月激情小说| 永久中文字幕| 夜夜爽7777精品国产三级| 亚洲AV秘无码不卡在线观看| 97人人干人人| 午夜69成人做爱视频网站| 亚洲久久在线| 欧美网站在线观看| 亚洲在线视频免费观看| 久久精品视频免费观看| 人人爽人人爽人人爽| 天天干天天射天天操| 波多野结衣视频网站| 欧美亚洲天堂| 亚洲Japanese办公室制服 | 无码做爰欢H肉动漫网站在线看| 五月婷网| 猛男大粗猛爽h男人味| 亚洲日韩黄色| 69av在线观看视频| 亚洲免费观看高清完整版在线| 色婷婷综合激情| 亚洲AV观看| 国产美女自慰网站| 三级片自拍| 三级乱伦86丝袜无码| 天天日很很日| 52妺嘿嘿午夜福利在线| 九七在线视频| 国产成人精品无码区在线| 国产AV无码高清| 亚洲无码人妻| 另类日韩| 日韩一页| 被男友内S~高H文| 亚洲中文无码在线观看| 少婦揉BBBB揉BBBB揉| 亚洲日韩在线免费观看| 嫰BBB槡BBBB槡BBBB| 天天干天天色天天日| 黄色动态视频| 国产美女裸体网站| 超碰在线观看2407| 三级成人AV| 国产精品国产精品国产专区不52 | a√天堂资源中文8| 免费无码又爽又黄又刺激网站| 蜜桃av一区二区三区| 日本黄色中文字幕| 亚洲播播| 青青草无码在线视频| 91人妻无码精品| 国产女人与禽zOz0性| 无码人妻在线播放| 欧美VA| 日韩欧美爱爱| 99re在线观看| 亚洲福利一区二区| 国产一级特黄大片| 国产午夜激情视频| A片视频免费| 一级黄在线观看| 中文字幕第23页| 一级黄色小视频| 黄色亚洲视频| 国产一区二区三区四区视频| 久久久久久三级电影| 69伊人| 欧美日韩中文字幕视频| 欧美激情无码一区二区三区张丽| 波多野结衣视频在线| www.黄| 天天操天天谢| 成人在线黄片| 亚洲爆乳无码一区二区三区| 高清无码在线免费| 澳门黄片| 无码做爰欢H肉动漫网站在线看 | 91色综合| 99re久久| 色图在线观看| 久久精品视频免费看| 天天日天天操天天摸天天干天日射天天插| 美女91视频网站| 欧美日本在线| 欧美色欲| 天天爽夜夜操| 伊人大香蕉综合在线| 国产伊人大香蕉| 中文字幕日韩精品人妻| 杨幂操逼视频| 五月天三级片| 超碰在线大香蕉| 高清无码毛片| 亚洲韩国国产| 国产愉拍91九色国产愉拍| 一级特黄AA片| 成人在线网| 西西西444www无码视频| 99免费在线视频| 最新日韩无码| 日本一级婬片A片AAA毛多多| 天天天天色| 欧美性天天| 三级网站免费观看| 日韩v| 国产天堂视频| 成人免费在线电影| 丰满老妇高潮一级A片| 国产成人在线播放| 一级片直播| 婷婷五月色综合| 国产午夜福利在线| 国产天天操| 国产精品无| 最新中文字幕在线观看视频| 91蜜桃在线| 成人三级黄色| 久久黄色视屏| 最新国产在线| 人人摸人人草| 久一在线| 免费日本黄色| 高潮视频在线观看| 久久久久久黄片| 亚洲免费成人网| 大荫蒂HD大荫蒂视频| 嫩草av在线| 欧美国产精品一区二区三区| 成人欧美视频| 蜜桃视频在线观看18| 午夜无码精品| 午夜AV在线观看| 玖玖成人| AV大全在线免费观看| 欧一美一婬一伦一区二区三区自慰, | 国产乱子伦视频国产印度| 久久青草视频| 大鸡巴久久久久| 国产在线观看免费| 天天干天天日天天干| 国产人妻人伦精品1国产丝袜| 天天射天天操天天干| 激情乱伦五月天| 欧美日韩不卡在线| 亚洲色鬼| 无码人妻av黄色一区二区三区| 天天天做夜夜夜夜爽无码| AV在线导航| 老鸭窝在线观看视频| av大片免费看| 蜜臀网| 超碰少妇| 国产精品久久久久国产A级| 国产免费观看视频| 伊人大香蕉久久| 一区二区人妻| 欧美三级片网| 美女被操免费网站| 国产天堂av| jizzjizz欧美| 狠狠的操| 欧美操逼电影| 人善交精品一区二区三区| 精品人妻中文字幕视频| 俺来俺也去www色在线观看| 中文字幕中文字幕| 亚洲日韩国产中文字幕| 丁香五月天在线视频| 国产精品九九九| av亚洲波多野结衣白嫩水多波 | 国产v片| 狠狠干2022| 香蕉视频亚洲| 亚洲无码AV麻豆| 亚洲AV黄色| 这里都是精品| 日韩精品免费一区二区在线观看| 777视频在线观看| 水蜜桃网站| 操逼视频一级| 天堂无码在线| 日韩精品黄片| 国产—a毛—a毛A免费看图| 国产高清AV| 自拍偷拍激情视频| 男人的天堂黄色| 青草视频在线观看免费| 五月丁香性爱| 日本黄色视频电影| 国产三级黄| 91精品久久久久| 中文字幕在线高清| 午夜不卡视频| 日韩人妻精品一区二区| 高潮AV在线观看| 无码免费视频| 伊人天天日| 香蕉一区| 欧美黄色一级网站| 亚洲国产精品久久人人爱| 日韩电影免费在线观看| 无码探花| 成人视频欧美| 亚洲av偷拍| 伊人色女操穴综合网| 91精品国产一区二区三区| 成人网视频| 色五月婷婷婷| 日韩精品网| 国产精品一区一区三区| 中文在线a√在线8| 国产乱婬AV片免费| 国产乱人| 成人婷婷五月| 青青草91视频| 精品中文在线视频| 熟女人妻视频| 海滩AV黑人| 欧美性猛交XXXX乱大交HD| 北条麻妃在线无码| 18禁一区二区| 大香蕉综合在线| 亚洲婷婷综合网| 成人精品免费| a视频免费看| 国产精品无码永久免费不卡| 无码在线看| 日韩五月天| 免费v在线观看| 亚洲有码在线| 日韩激情视频在线观看| 人妻精品一区二区| 成人一区二区三区四区五区| 黄色亚洲视频| 不卡无码免费视频| 91啪啪视频| 91av免费看| 日韩国产成人| 成人国产无码| 日韩爱爱视频| 天天艹av| 91无码在线观看| 黄色一级片免费| 成人在线观看网站| 自拍啪啪| 青青草原av| 中文字幕乱码中文乱码91| 99精品在线观看| 蜜臀久久99精品久久久久酒店更新时间| 国产天天操| 国产乱伦中文字幕| 黄色av影院| 97精品人妻一区二区三区在线| 欧美视频色| 日韩黄色三级| 婷婷玖玖| 无码AⅤ一区二区三区| 欧美激情亚洲无码| 人人操天天操| 丝袜久久| av解说| 婷婷色五月激情| 无码a区天堂| 五月天婷婷色色| 免费V片在线观看| www.天天射| 成人一区二区三区四区五区| 日本操逼网站| 免费电影日本黄色| www.色老板| 亚洲AV秘成人久久无码海归| 欧美一二三区黄色免费视屏| 欧美日韩国产成人在线| 五月天丁香成人| 激情综合五月| 狼友在线播放| 亚洲狠狠干| 中文字幕人妻在线中文乱码怎么解决| 亚州AV操屄| 一级片a片| 一本道不卡色色| 一级A片亲子乱中文| 人妻丝袜蕾丝高跟双飞| 国产精品视频福利| 黄色电影AV| 久久性爱网站| 12——13女人毛片毛片| 伊人在线成人视频| 国产精品久久毛片A片| 苍井空精毛片精品久久久| 青娱乐99| WWW.亚洲无码| 久久一做爱| 风流少妇一区二区三区91| 日逼无码视频| 一级A片一毛片大全| 日韩中文字幕av在线| 2019中文字幕在线免费观看| 无码秘人妻一区二区三-百度 | 成人在线国产| 中韩日美免费看的电影| a在线观看| 精品欧美乱码久久久久久| 国产91页| 成人A片在线观看| 狠狠干综合网| 久久久国产精品人人片| 国产成人AV在线播放| 激情久久综合| 日韩理论片| 美女操逼网站| 福利视频免费观看| 欧美天堂在线| 欧美日韩激情视频| 欧美日韩一区二区三区视频| 精品国产三级| 乱子伦国产精品视频一级毛| 午夜av在线播放| 欧美福利| 无码人妻一区二区三区在线视频不卡 | 水蜜桃一区| 黄色工厂这里只有精品| 欧美人人插| 欧美日韩中文字幕在线| AV高清无码在线| 亚州一级成人片| 蜜桃AV在线| 久久久久久久久久成人| 亚洲激情网址| 人人操在线观看| 免费黄色福利视频| 国产一级a毛一级a毛片视频黑人| 日韩国产成人| 91九色TS另类国产人妖| 成人欧美一区二区三区白人| 黄色小视频在线观看| 久草麻豆| 日韩高清无码成人| 亚洲无码视频免费看| 欧一美一婬一伦一区二区三区自慰, | 亚洲精品成人av| 久久午夜无码鲁丝片| 影音先锋av在线资源| 精品无码久久| 国产在线观看| 偷拍-91爱爱| www.黄色在线| 亚洲免费观看高清| 草逼国产| 日韩中文字幕在线高清| 悠悠无码一区日韩妇女| 一级爱爱片| 久久情| 日韩无码91| 久久国产AV| 久久午夜福利电影| 草久热| 不雅一级| 久久精品9| 3D动漫精品啪啪一区二区竹笋| 一级成人片在线观看| 一区毛片| 男人av在线| 日本A一级片| 中文字幕片av| 国产成人精品一区二区三区| 在线观看的AV| 国产91www| 中文字幕无码在线| 久操无码| 伊人黄色电影| 国产女人18毛片水18精品软件| 91你懂的| 免费A网站| 啊啊啊啊啊在线观看| 欧美激情性爱网站| 亚洲免费在线观看视频| AV在线影院| 久久久久久免费| 香蕉A片| 亚洲成人在线免费观看| 亚洲小电影在线| 日韩一级内射| 99热思思| 免费黄色AV| 91小视频在线观看| 91成人在线电影| aaa精品视频| 欧美亚洲综合手机在线| 日本激情网站| 日韩人妻码一区二区三区| 少妇的屄| 国产91在线中日| 国产精品久久久久野外| 久久久无码视频| 中文字幕av久久爽爽| 免费AV资源在线观看| 国产小视频在线观看| 高H视频在线观看| 高潮流水视频| 日韩国产三级| 黄网在线观看视频| 国产精品视频免费| 久久亚洲av| 亚洲精品免费在线观看| 五月丁香婷中文字幕| 黄色电影免费网站| 西西888WWW大胆无码| 国产AV一二三区| 成人91视频| 久艹在线视频| 色婷婷久久久久swag精品| 日韩高清无码一区| 亚洲日韩影院| 91AV在线电影| 日韩无码一二三区| 亚洲精品国产精品乱码不卡√香蕉| 日韩看片| 天堂网av在线| 国产V视频| 欧美BBWBBWBBWBBWBBwBBW | 中文字幕高清无码在线播放| 日韩一区二区在线观看| xxxx国产| 日韩精品人妻无码| 69国产精品无码免费| 友田真希一级婬片A片| 久久欧洲成人精品无码区| 泄火熟妇2-ThePorn| 秋霞国产| 国产操b视频| 国精产品一二三区| 在线免费观看国产视频| 欧美夜夜草视频| 在线观看国产视频| 成人av免费在线观看| 熟睡侵犯の奶水授乳在线| 无码人妻一区二区三区在线视频不卡 | 老司机精品在线观看| 操逼黄色视频| 日本AV在线播放| 大黑人荫蒂BBBBBBBBB| 蜜臀久久99精品久久久久酒店更新时间| 无码直播| 在线v片| 麻豆MD传媒MD0071| 日韩国产在线观看| 婷婷在线观看视频| 五月丁香婷婷在线| 久9视频| 男人视频网| 一区二区免费在线观看| 亚洲天堂视频网| 中文字幕永久在线5| 日本人妻视频| 黄色录像一级片| 第一福利成人AV导航| 欧美三级片网| 99re在线观看观看这里只有精品| 97精品超碰一区二区三区| 少妇熟女视频一区二区三区 | 国产一区二区三区四区五区六区七区| 免费国产h| 搡BBBB推BBBB推BBBB| 500部大龄熟乱4K视频| 97碰碰碰| 色天天综合网| 91精品国产aⅴ一区二区| 偷拍-91爱爱| 青青色综合| 少妇一级婬片内射视频| 国产成人电影一区二区| 插菊花综合网亚洲| 免费无码视频一区二区| 2025精品偷拍视频| h网站在线观看| 久久午夜视频| 久久黄色网址| 69AV在线播放| 成年人视频在线免费观看| 69亚洲精品| 88在线无码精品秘入口九色| 一级AAAAA片裸体做受| A片黄色毛片| 人妻懂色av粉嫩av浪潮av| 色吟av| 老妇性BBWBBWBBWBBW| 大乳奶一级婬片A片| av女人天堂| 国产成人网| 日韩中文字幕电影| 久久久久亚洲AV成人网人人软件| 国产91精品探花一区二区| 精品日韩一区二区三区| 日韩av高清| 黄色动漫在线免费观看| 2019天天操| 国产无码做爱视频| 午夜精品一区二区三区在线成人| 我要操视频| 无码一区二区av| 欧美特级AAA| 蜜臀AV一区二区三区免费看| 亚洲性爱网站| 91天天综合| 国产九色91回来了| 性无码专区| 热99精品| 中文字幕在线观看av| 亚洲欧美国产精品专区久久| 亚洲AV无码成人精品涩涩麻豆| 九九成人电影| 国产在线中文字幕| 国产香蕉在线| 中文字幕免费视频在线观看| 免费内射视频| 国产无码免费在线观看| 安徽妇搡BBBB搡BBBB| 国产真实露脸乱子伦对白高清视频| 婷婷性爱五月天| a级毛片在线观看| 亚洲日韩欧美在线观看| 69国产在线| 日本女人牲交视频| 国产欧美日韩一区二区三区| 久久久久久久97| 婷婷五月欧美| 国产视频一区二区在线观看| 大香蕉欧美在线| 永久免费无码中文字幕| 亚洲成人AV无码| 国产成人无码免费| 日本久久综合| 高清无码波多野结衣| 久久婷婷亚洲| 91人妻无码精品蜜桃| 成人三级电影在线观看| 免费在线观看a| 91操B| 亚洲青草| 五月天久久久| 国产一页| 9I成人免费版| 欧美A级视频| 天天日夜夜| 久久九九99| 亚洲秘AV无码一区二区qq群 | 中文字幕在线网| 国产AV一二三区| 成人性爱av| 国产精品自拍小视频| 久久久久久亚洲AV无码专区| 亚洲资源网| 无码国产精品一区二区免费96| 国产乱子伦真实精品| 国产精品成人电影| 一区二区三区久久| 春色Av| 91精品国产成人www| 日韩丰满人妻| www.欧美精品| 欧美最猛黑A片黑人猛交蜜桃视频 色噜噜狠狠一区二区三区300部 | 久久91欧美特黄A片| 成人第一页| 亚洲无码视频免费看| 亚洲AV成人片无码网站| 久久V| 韩国午夜激情| 午夜亚洲福利视频| 亚洲性图第一页| 日韩精品一| 免费人成在线观看视频播放| 丁香六月婷婷综合激情欧美| 午夜在线免费视频| 高清成人无码| 亚洲激情四射| 青青久操| 操逼视频在线免费观看| 黄片www| 亚洲AV无码第一区二区三区蜜桃| 污污污污污www网站免费民国| 一本色道久久综合狠狠躁| 2017天天干天天射| 九色91PORNY国产| 亚洲日韩欧美一厂二区入| 无码精品一区二区在线| 久久久久久久无码| 亚洲色偷精品一区二区三区 | 亚洲.欧美.丝袜.中文.综合| 91农村站街老熟女露脸| 男人色天堂网| 亚洲v视频| 国产在线激情| 中文字幕乱伦性爱| 日本女人高潮视频| 精品国产一二三区| 久久久高清无码视频| 丁香啪啪| 九九九精品在线| AV一区二区三区四区| 不卡AV在线| 日韩av免费| 一级黄色大片| 国产真人一级a爱做片| 婷婷在线观看免费| 成人激情四射网| 免费看黄色视频的网站| 伊人蕉久| 蝌蚪窝视频在线| 五月丁香影院| 日韩在线观看| 8050午夜一级免费| 在线日韩一区二区| 亚洲AV毛片成人精品网站| 国产成人激情视频| 中文在线a∨在线| 先锋影音AV在线| 99久久久久| 国产探花视频在线免费观看| 亚洲午夜精品久久久久久APP| 中文字幕北条麻妃| 色欲大香蕉| 亚洲.欧美.丝袜.中文.综合| 精品国产一区二区三区久久久蜜月| 臭小子啊轻点灬太粗太长了的视频 | 97A片在线观看播放| 精品国产乱子伦一区二区三区最新章| 亚洲男人综合| 在线观看亚州| 亚洲成年人在线| 欧洲美一区二区三区亚洲| 久久99久久99久久99| 中文字幕一区二区三区四虎在线 | 国产骚逼视频| jizz国产视频| 99re6热在线精品视频| 91人妻人人澡人人爽人人精品乱| 三级片无码在线播放| 精品人妻一区二区三区鲁大师| 久久亚洲中文| 国产精品一区二区三区不卡| 成人网大香蕉| 亚洲乱码精品久久久久..| 五月天黄色小说| 91乱伦| 日韩无修正| 91极品视觉盛宴| 日韩精品一区二区三区黄冈站长| 蜜臀99久久精品久久久久久软件| 91AV在线播放| 欧美插插插| 欧美亚洲国产一区二区三区| 嫩BX区二区三区的区别| 日韩另类视频| 亚洲色图在线观看| 亚洲无码A片在线| 嫩BBB搡BBBB搡BBBB-百度| 日本一级大片| 欧美性爱91| 99偷拍| 九九九九AV| 操逼免费视频网站| 操逼操123| 日本A片视频| 嘿咻无码推油| 911国产视频| 日韩精品一区在线| 中文字幕精品无码一区二区| 大香蕉一区二区三区| 国产性爱一级片| 爱爱视频天天操| 日本久久精品18| 日韩二区三区| 97无码免费| 成人网站一区二区| 人人干天天操| 一区二区视频在线观看| 久久肏| 亚洲网站免费在线观看| 无码中文在线| 亚洲欧美日韩综合| 91国产精品| 国产一区2区| 99久久久无码国产精品性波多 | 少妇搡BBBB搡BBBB毛多多| 老女人操逼网| 日韩福利一区| 久久久久久久无码| 亚洲日韩久久| 337P大胆粉嫩噜噜噜| 日韩逼逼| 欧美日韩视频在线播放| 亚洲日韩精品中文字幕| 亚洲性爱一区二区三区| 亚洲天堂影音先锋| 人妻操| 人人操人人射| 中文字幕+乱码+中文字幕一区| 影音先锋国产av| 粉粉嫩嫩的18虎白女| www.zaixianshipin| 久久视频99| 九九视频免费观看| 亚洲51| 蜜桃视频欧美| 国产91无码| 爱爱无码视频| 国产高清AV| 中文字幕性爱电影| 亚洲天堂精品视频| 久久激情网| 成人无码高清在线观看| 逼逼影院| 日本黄在线观看| 成人性生活一级片| 亚洲高清无码视频在线播放| 无码专区在线观看| 操逼天堂| 国产一级黄色A片| 99热这里只有精品7| 偷拍第一页| 精品久久91| 精品av在线观看| 欧美一级黃色A片免费看小优视频 无码人妻精品一区二区三千菊电影 | 免费毛片网站| 欧美一级A片免费看视频小说| 一道本无码在线视频| 无码人妻丰满熟妇| 成人免费福利| 亚洲国产成人在线视频| 精品无码免费| 深爱激情综合| japanese在线观看| 99热99精品| 亚洲AV自拍| 国产视频成人| 九一九色国产| 狠狠躁夜夜躁人人爽人妻| 亚洲色图欧美在线| 夜色福利在线| 国产av高清| 超碰1999| 成人三级片免费| 久久一做爱| 韩国无码一区二区| 好吊视频一区二区| 久久成人综合网| 九色麻豆| 夜夜骑天天操| 九九九九AV| 99精品无码视频| 黄色成人网站在线免费观看| 欧美爱爱免费看| 91人妻人人爽人人澡人人爽| www.黄| 嫩草在线播放| 亚洲成人AV在线观看| 中文字幕av高清片,中文在线观看 www一个人免费观看视频www | 亚洲偷拍中文| 午夜成人福利剧场| 亚洲色图图片| 黄片网站入口| 91精品国产99久久久久久天美 | 91麻豆国产视频| 亚洲一区二区在线视频| 久久久久9999|