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

JavaScript 原型概念深入理解

開發 前端
原型是JavaScript中一個比較難理解的概念,原型相關的屬性也比較多,對象有”[[prototype]]”屬性,函數對象有”prototype”屬性,原型對象有”constructor”屬性。

原型是JavaScript中一個比較難理解的概念,原型相關的屬性也比較多,對象有”[[prototype]]”屬性,函數對象有”prototype”屬性,原型對象有”constructor”屬性。

為了弄清原型,以及原型相關的這些屬性關系,就有了這篇文章。

相信通過這篇文章一定能夠清楚的認識到原型,現在就開始原型之旅吧。

認識原型

開始原型的介紹之前,首先來認識一下什么是原型?

在JavaScript中,原型也是一個對象,通過原型可以實現對象的屬性繼承,JavaScript的對象中都包含了一個” [[Prototype]]”內部屬性,這個屬性所對應的就是該對象的原型。

“[[Prototype]]”作為對象的內部屬性,是不能被直接訪問的。所以為了方便查看一個對象的原型,Firefox和Chrome中提供了”__proto__”這個非標準(不是所有瀏覽器都支持)的訪問器(ECMA引入了標準對象原型訪問器”Object.getPrototype(object)”)。

實例分析

下面通過一個例子來看看原型相關概念:

  1. function Person(name, age){ 
  2.     this.name = name; 
  3.     this.age = age; 
  4.  
  5.     this.getInfo = function(){ 
  6.         console.log(this.name + " is " + this.age + " years old"); 
  7.     }; 
  8.  
  9. var will = new Person("Will"28); 

在上面的代碼中,通過了Person這個構造函數創建了一個will對象。下面就通過will這個對象一步步展開了解原型。

Step 1: 查看對象will的原型

通過下面代碼,可以查看對象will的原型:

  1. console.log(will.__proto__); 
  2. console.log(will.constructor); 

結果分析:

  • “Person {}”對象就是對象will的原型,通過Chrome展開可以看到,”Person {}”作為一個原型對象,也有”__proto__”屬性(對應原型的原型)。

  • 在這段代碼中,還用到了”constructor”屬性。在JavaScript的原型對象中,還包含一個”constructor”屬性,這個屬性對應創建所有指向該原型的實例的構造函數

    • 通過”constructor”這個屬性,我們可以來判斷一個對象是不是數組類型

      function isArray(myArray) {
          return myArray.constructor.toString().indexOf("Array") > -1;
      }

    • 在這里,will對象本身并沒有”constructor”這個屬性,但是通過原型鏈查找,找到了will原型(will.__proto__)的”constructor”屬性,并得到了Person函數。

Step 2: 查看對象will的原型(will.__proto__)的原型

既然will的原型”Person {}”也是一個對象,那么我們就同樣可以來查看”will的原型(will.__proto__)的原型”。

運行下面的代碼:

  1. console.log(will.__proto__ === Person.prototype); 
  2. console.log(Person.prototype.__proto__); 
  3. console.log(Person.prototype.constructor); 
  4. console.log(Person.prototype.constructor === Person); 

結果分析:

  • 首先看 “will.__proto__ === Person.prototype”,在JavaScript中,每個函數 都有一個prototype屬性,當一個函數被用作構造函數來創建實例時,該函數的prototype屬性值將被作為原型賦值給所有對象實例(也就是設置 實例的__proto__屬性),也就是說,所有實例的原型引用的是函數的prototype屬性。了解了構造函數的prototype屬性之后,一定就明白為什么***句結果為true了。

    • prototype屬性是函數對象特有的,如果不是函數對象,將不會有這樣一個屬性。

  • 當通過”Person.prototype.__proto__”語句獲取will對象原型的原型時候,將得到”Object {}”對象,后面將會看到所有對象的原型都將追溯到”Object {}”對象。

  • 對于原型對象”Person.prototype”的”constructor”,根據前面的介紹,將對應Person函數本身。

通過上面可以看到,“Person.prototype”對象和Person函數對象通過”constructor”和”prototype”屬性實現了相互引用(后面會有圖展示這個相互引用的關系)

Step 3: 查看對象Object的原型

通過前一部分可以看到,will的原型的原型是”Object {}”對象。實際上在JavaScript中,所有對象的原型都將追溯到”Object {}”對象。

下面通過一段代碼看看”Object {}”對象:

  1. console.log(Person.prototype.__proto__ === Object.prototype); 
  2. console.log(typeof Object); 
  3. console.log(Object); 
  4. console.log(Object.prototype); 
  5. console.log(Object.prototype.__proto__); 
  6. console.log(Object.prototype.constructor); 

通過下面的代碼可以看到:

  • Object對象本身是一個函數對象。

  • 既然是Object函數,就肯定會有prototype屬性,所以可以看到”Object.prototype”的值就是”Object {}”這個原型對象。

  • 反過來,當訪問”Object.prototype”對象的”constructor”這個屬性的時候,就得到了Obejct函數。

  • 另外,當通過”Object.prototype.__proto__”獲取Object原型的原型的時候,將會得到”null”,也就是說”Object {}”原型對象就是原型鏈的終點了。

Step 4: 查看對象Function的原型

在上面的例子中,Person是一個構造函數,在JavaScript中函數也是對象,所以,我們也可以通過”__proto__”屬性來查找Person函數對象的原型。

  1. console.log(Person.__proto__ === Function.prototype); 
  2. console.log(Person.constructor === Function) 
  3. console.log(typeof Function); 
  4. console.log(Function); 
  5. console.log(Function.prototype); 
  6. console.log(Function.prototype.__proto__); 
  7. console.log(Function.prototype.constructor); 

結果分析 :

  • 在JavaScript中有個Function對象(類似Object),這個對象本身是個函數;所有的函數(包括Function,Object)的原型(__proto__)都是”Function.prototype”。

  • Function對象作為一個函數,就會有prototype屬性,該屬性將對應”function () {}”對象。

  • Function對象作為一個對象,就有”__proto__”屬性,該屬性對應”Function.prototype”,也就是說,”Function.__proto__ === Function.prototype”

  • 對于Function的原型對象”Function.prototype”,該原型對象的”__proto__”屬性將對應”Object {}”

對比prototype和__proto__

對于”prototype”和”__proto__”這兩個屬性有的時候可能會弄混,”Person.prototype”和”Person.__proto__”是完全不同的。

在這里對”prototype”和”__proto__”進行簡單的介紹:

  • 對于所有的對象,都有__proto__屬性,這個屬性對應該對象的原型

  • 對于函數對象,除了__proto__屬性之外,還有prototype屬性,當一個函數被用作構造函數來創建實例時,該函數的prototype屬性值將被作為原型賦值給所有對象實例(也就是設置實例的__proto__屬性)

圖解實例

通過上面結合實例的分析,相信你一定了解了原型中的很多內容。

但是現在肯定對上面例子中的關系感覺很凌亂,一會兒原型,一會兒原型的原型,還有Function,Object,constructor,prototype等等關系。

現在就對上面的例子中分析得到的結果/關系進行圖解,相信這張圖可以讓你豁然開朗。

對于上圖的總結如下:

  • 所有的對象都有”__proto__”屬性,該屬性對應該對象的原型

  • 所有的函數對象都有”prototype”屬性,該屬性的值會被賦值給該函數創建的對象的”__proto__”屬性

  • 所有的原型對象都有”constructor”屬性,該屬性對應創建所有指向該原型的實例的構造函數

  • 函數對象和原型對象通過”prototype”和”constructor”屬性進行相互關聯

通過原型改進例子

在上面例子中,”getInfo”方法是構造函數Person的一個成員,當通過Person構造兩個實例的時候,每個實例都會包含一個”getInfo”方法。

var will = new Person("Will", 28);
var wilber = new Person("Wilber", 27);

前面了解到,原型就是為了方便實現屬性的繼承,所以可以將”getInfo”方法當作Person原型(Person.__proto__)的一個屬性,這樣所有的實例都可以通過原型繼承的方式來使用”getInfo”這個方法了。

所以對例子進行如下修改:

  1. function Person(name, age){ 
  2.     this.name = name; 
  3.     this.age = age; 
  4.  
  5. Person.prototype.getInfo = function(){ 
  6.     console.log(this.name + " is " + this.age + " years old"); 
  7. }; 

修改后的結果為:

原型鏈

因為每個對象和原型都有原型,對象的原型指向對象的父,而父的原型又指向父的父,這種原型層層連接起來的就構成了原型鏈。

在”理解JavaScript的作用域鏈“一文中,已經介紹了標識符和屬性通過作用域鏈和原型鏈的查找。

這里就繼續看一下基于原型鏈的屬性查找。

屬性查找

當查找一個對象的屬性時,JavaScript 會向上遍歷原型鏈,直到找到給定名稱的屬性為止,到查找到達原型鏈的頂部(也就是 “Object.prototype”), 如果仍然沒有找到指定的屬性,就會返回 undefined。

看一個例子:

  1. function Person(name, age){ 
  2.     this.name = name; 
  3.     this.age = age; 
  4.  
  5. Person.prototype.MaxNumber = 9999
  6. Person.__proto__.MinNumber = -9999
  7.  
  8. var will = new Person("Will"28); 
  9.  
  10. console.log(will.MaxNumber); 
  11. // 9999 
  12. console.log(will.MinNumber); 
  13. // undefined 

在這個例子中分別給”Person.prototype “和” Person.__proto__”這兩個原型對象添加了”MaxNumber “和”MinNumber”屬性,這里就需要弄清”prototype”和”__proto__”的區別了。

“Person.prototype “對應的就是Person構造出來所有實例的原型,也就是說”Person.prototype “屬于這些實例原型鏈的一部分,所以當這些實例進行屬性查找時候,就會引用到”Person.prototype “中的屬性。

屬性隱藏

當通過原型鏈查找一個屬性的時候,首先查找的是對象本身的屬性,如果找不到才會繼續按照原型鏈進行查找。

這樣一來,如果想要覆蓋原型鏈上的一些屬性,我們就可以直接在對象中引入這些屬性,達到屬性隱藏的效果。

看一個簡單的例子:

  1. function Person(name, age){ 
  2.     this.name = name; 
  3.     this.age = age; 
  4.  
  5. Person.prototype.getInfo = function(){ 
  6.     console.log(this.name + " is " + this.age + " years old"); 
  7. }; 
  8.  
  9. var will = new Person("Will"28); 
  10. will.getInfo = function(){ 
  11.     console.log("getInfo method from will instead of prototype"); 
  12. }; 
  13.  
  14. will.getInfo(); 
  15. // getInfo method from will instead of prototype 

對象創建方式影響原型鏈

會到本文開始的例子,will對象通過Person構造函數創建,所以will的原型(will.__proto__)就是”Person.prototype”。

同樣,我們可以通過下面的方式創建一個對象:

  1. var July = { 
  2.     name: "July"
  3.     age: 28
  4.     getInfo: function(){ 
  5.         console.log(this.name + " is " + this.age + " years old"); 
  6.     }, 
  7.  
  8. console.log(July.getInfo()); 

當使用這種方式創建一個對象的時候,原型鏈就變成下圖了,July對象的原型是”Object.prototype”也就是說對象的構建方式會影響原型鏈的形式。

hasOwnProperty

“hasOwnProperty”是”Object.prototype”的一個方法,該方法能判斷一個對象是否包含自定義屬性而不是原型鏈上的屬性,因為”hasOwnProperty” 是 JavaScript 中***一個處理屬性但是不查找原型鏈的函數。

相信你還記得文章最開始的例子中,通過will我們可以訪問”constructor”這個屬性,并得到will的構造函數Person。這里結合”hasOwnProperty”這個函數就可以看到,will對象并沒有”constructor”這個屬性。

從下面的輸出可以看到,”constructor”是will的原型(will.__proto__)的屬性,但是通過原型鏈的查找,will對象可以發現并使用”constructor”屬性。

“hasOwnProperty”還有一個重要的使用場景,就是用來遍歷對象的屬性。

  1. function Person(name, age){ 
  2.     this.name = name; 
  3.     this.age = age; 
  4.  
  5. Person.prototype.getInfo = function(){ 
  6.     console.log(this.name + " is " + this.age + " years old"); 
  7. }; 
  8.  
  9. var will = new Person("Will"28); 
  10.  
  11. for(var attr in will){ 
  12.     console.log(attr); 
  13. // name 
  14. // age 
  15. // getInfo 
  16.  
  17. for(var attr in will){ 
  18.     if(will.hasOwnProperty(attr)){ 
  19.         console.log(attr); 
  20.     } 
  21. // name 
  22. // age 

總結

本文介紹了JavaScript中原型相關的概念,對于原型可以歸納出下面一些點:

  • 所有的對象都有”[[prototype]]”屬性(通過__proto__訪問),該屬性對應對象的原型

  • 所有的函數對象都有”prototype”屬性,該屬性的值會被賦值給該函數創建的對象的”__proto__”屬性

  • 所有的原型對象都有”constructor”屬性,該屬性對應創建所有指向該原型的實例的構造函數

  • 函數對象和原型對象通過”prototype”和”constructor”屬性進行相互關聯

還有要強調的是文章開始的例子,以及通過例子得到的一張”普通對象”,”函數對象”和”原型對象”之間的關系圖,當你對原型的關系迷惑的時候,就想想這張圖(或者重畫一張當前對象的關系圖),就可以理清這里面的復雜關系了。

通過這些介紹,相信一定可以對原型有個清晰的認識。

 

 

 

責任編輯:王雪燕 來源: 田小計劃
相關推薦

2012-01-05 15:07:11

JavaScript

2021-02-17 11:25:33

前端JavaScriptthis

2024-07-18 10:12:04

2019-11-05 10:03:08

callback回調函數javascript

2013-11-05 13:29:04

JavaScriptreplace

2020-07-24 10:00:00

JavaScript執行上下文前端

2020-12-16 09:47:01

JavaScript箭頭函數開發

2011-03-02 12:33:00

JavaScript

2017-03-28 21:39:41

ErrorsStack trace代碼

2017-04-25 15:30:23

堆棧函數JavaScript

2016-12-08 15:36:59

HashMap數據結構hash函數

2010-06-01 15:25:27

JavaCLASSPATH

2020-07-21 08:26:08

SpringSecurity過濾器

2023-11-13 16:33:46

2024-09-02 14:12:56

2012-04-12 09:38:21

JavaScript

2020-02-20 14:00:15

JavaScript原型原型鏈

2009-09-25 09:14:35

Hibernate日志

2023-10-19 11:12:15

Netty代碼

2013-09-22 14:57:19

AtWood
點贊
收藏

51CTO技術棧公眾號

色哟哟在线观看视频| 欧美精品人人做人人爱视频| 日日骚一区二区三区| 99精品中文字幕在线不卡| 精品免费在线观看| 亚洲mv在线看| 黄色av网址在线| 日韩国产高清在线| 色综合五月天导航| 久久精品无码一区| 日韩在线观看一区二区三区| 欧美日韩国产精品一区二区不卡中文| 日韩福利二区| 天天摸天天碰天天爽天天弄| 美腿丝袜亚洲一区| 亚洲91精品在线观看| 国产ts在线播放| 亚洲综合影院| 欧美图区在线视频| 黄色网页免费在线观看| 日本免费在线视频| 99久久久精品| 亚洲自拍小视频免费观看| 美日韩一二三区| 国产在线不卡| www.xxxx欧美| 亚洲精品国产熟女久久久| 91久久精品无嫩草影院| 欧美日本在线看| 人妻有码中文字幕| 成人超碰在线| 国产精品欧美极品| 国产一区二区三区高清视频| 国产一区二区网站| 日本欧美一区二区三区| 欧美孕妇与黑人孕交| 免看一级a毛片一片成人不卡| 日韩av久操| 国产一区二区三区在线| 久久亚洲AV成人无码国产野外| 日韩第一区第二区| 欧美疯狂做受xxxx富婆| 美女网站色免费| 韩日精品一区| 在线视频国内一区二区| 无码aⅴ精品一区二区三区浪潮| 日本h片在线观看| 亚洲人成在线播放网站岛国| 亚洲日本欧美在线| 永久av在线| 国产精品每日更新在线播放网址| 日本一区二区在线| 黄色电影免费在线看| 91在线视频播放| 久久精品人成| 精品欧美不卡一区二区在线观看 | 婷婷五月综合激情| 成人免费毛片片v| 精品国产综合区久久久久久| 天堂资源中文在线| 久久在线观看免费| 欧美重口乱码一区二区| 国产专区在线| 中文字幕不卡一区| 永久域名在线精品| 国产激情小视频在线| 亚洲日穴在线视频| 奇米777四色影视在线看| 日本片在线观看| 亚洲一区二区在线观看视频| 99久久国产综合精品五月天喷水| 欧美日韩国产观看视频| 一本到一区二区三区| 国产熟女高潮视频| 国产精品久久久久久久久久齐齐 | 性做久久久久久久久久| 国产超碰在线一区| 久久99影院| 福利视频在线播放| 亚洲欧美视频在线观看| 久久久久99精品成人片| 日韩伦理福利| 欧美日韩中文国产| 韩国三级丰满少妇高潮| 任你弄精品视频免费观看| 亚洲人成在线观| 强制高潮抽搐sm调教高h| 欧美日韩国产欧| 91成人免费观看网站| 这里只有精品国产| 国产高清不卡二三区| 九九九九精品| av午夜在线| 亚洲自拍另类综合| 37pao成人国产永久免费视频| 亚洲美女色播| 日韩成人网免费视频| 精品一区二区在线观看视频| 一区在线免费观看| 国产九九精品视频| 人妻va精品va欧美va| 国产精品天美传媒| www国产精品内射老熟女| 日韩午夜视频在线| 日韩精品视频在线免费观看| 麻豆精品国产免费| 免费精品视频| 国产精品推荐精品| 免费黄色电影在线观看| 丁香五六月婷婷久久激情| 国产精品自在自线| 国产一区二区三区网| 欧美俄罗斯乱妇| 又污又黄的网站| 91视频一区二区三区| 四虎免费在线观看视频| 人人鲁人人莫人人爱精品| 日韩精品一区在线| 午夜激情福利电影| 视频一区在线视频| 久久99精品久久久久久青青日本| 菠萝蜜视频国产在线播放| 在线一区二区视频| 免费a在线观看播放| 欧美日韩一区二区国产| 国产情人节一区| 精品视频三区| 一本色道久久加勒比精品| 欧美肉大捧一进一出免费视频| 一个色综合网| 国产色婷婷国产综合在线理论片a| 三级av在线| 午夜精品一区在线观看| 无码人妻丰满熟妇啪啪网站| 久久久久久美女精品| 国产免费久久av| 黄色电影免费在线看| 欧美视频第一页| 捆绑裸体绳奴bdsm亚洲| 在线不卡亚洲| 国产chinese精品一区二区| 亚洲按摩av| 日韩视频永久免费| 日本aⅴ在线观看| 国产一区二区三区四区五区入口| 一区精品在线| 亚洲午夜国产成人| 久久成人av网站| 国产麻豆精品一区| 日韩精品一区二区三区免费观看| 国外成人在线直播| 人妻一区二区三区| 亚洲成av人片在www色猫咪| 在线观看亚洲免费视频| 亚洲大胆视频| 国产一区二区三区四区五区在线 | 中国特级黄色大片| 亚洲一级特黄| 国产主播一区二区三区四区| 多野结衣av一区| 亚洲精品中文字幕女同| 九九热精品视频在线| 久久综合色婷婷| 青青草精品视频在线观看| 成人高清电影网站| 91精品啪aⅴ在线观看国产| www.久久ai| 精品黑人一区二区三区久久| 国产午夜视频在线播放| 2023国产一二三区日本精品2022| 黄色片一级视频| 欧美肥老太太性生活| 亚洲在线视频观看| 91吃瓜在线观看| 亚洲天堂av综合网| 国产精品久久久久毛片| 亚洲国产精品精华液网站| 中国美女乱淫免费看视频| 麻豆精品新av中文字幕| 精品无码av无码免费专区| 欧美电影在线观看完整版| 日本精品在线视频| 国产传媒在线播放| 日韩电影中文字幕在线观看| 糖心vlog精品一区二区| 亚洲最大色网站| 一道本在线观看| 国产精品18久久久久久久久 | 88xx成人永久免费观看| 乱亲女秽乱长久久久| 天天操天天干天天干| 欧美亚洲国产bt| 玖玖爱免费视频| 国产丝袜美腿一区二区三区| 宇都宫紫苑在线播放| 免费看的黄色欧美网站| 97av中文字幕| 日韩欧美二区| 含羞草久久爱69一区| 免费成人高清在线视频| 亚州国产精品久久久| 日本在线免费| 亚洲欧洲中文天堂| 丰满少妇在线观看bd| 欧美性一二三区| 欧美亚韩一区二区三区| 亚洲精品美国一| 日本成人免费视频| thepron国产精品| 伊人国产精品视频| 日产欧产美韩系列久久99| 久草视频国产在线| 午夜精品毛片| 日产精品久久久一区二区| 久久久久久久久久久久久久久久久久久久| 国产精品一区二区三区久久久| 国模精品视频| 欧美激情视频免费观看| 欧洲不卡视频| 中文字幕精品一区久久久久| 亚洲色图狠狠干| 精品免费日韩av| 99久久国产热无码精品免费| 在线观看日产精品| 亚洲午夜18毛片在线看| 亚洲妇熟xx妇色黄| 青娱乐国产在线视频| 亚洲天堂a在线| av资源在线免费观看| 久久久久久久综合狠狠综合| 黑丝av在线播放| 成人免费黄色大片| 伊人影院在线观看视频| 国产一区视频网站| 五月天婷婷影视| 麻豆freexxxx性91精品| 我要看一级黄色大片| 爽爽淫人综合网网站| 久久美女福利视频| 久久综合九色| 亚洲视频在线观看一区二区三区| 翔田千里一区二区| 亚洲欧洲日产国码无码久久99| 亚洲电影av| 毛片在线视频播放| 国产精品普通话对白| 日本久久久精品视频| 国产亚洲亚洲| 国产视频在线视频| 日本视频一区二区| 自拍偷拍21p| 久久99久久99精品免视看婷婷 | 日韩在线精品一区| 麻豆传媒在线免费看| 欧美成年人视频网站| 视频在线这里都是精品| 久久久久久国产精品美女| 日韩三级免费| 97在线视频免费观看| sis001欧美| 国产精品专区一| 亚洲国产视频二区| 国产在线观看一区| 国产探花在线精品| 在线视频一区观看| 国内精品久久久久国产盗摄免费观看完整版 | 免费成人在线看| 日韩国产高清污视频在线观看| 六十路在线观看| 精品国产一区二区三区久久狼黑人| 毛片av在线| 久久久亚洲精品视频| 成人爽a毛片免费啪啪| 国产精品美女呻吟| 视频在线观看免费影院欧美meiju| 国产欧美日韩综合精品二区| 免费一区二区| 黄色网络在线观看| 国产偷自视频区视频一区二区| 日本新janpanese乱熟| 国精产品一区一区三区mba桃花 | 秋霞影院一区二区三区| 日韩福利一区二区三区| 中文字幕一区二区三三| 少妇无码av无码专区在线观看| 青青草一区二区三区| 熟妇无码乱子成人精品| 久久新电视剧免费观看| 波多野结衣在线网址| 欧美日韩国产影院| 国产伦精品一区二区三区视频痴汉 | 黄色国产小视频| 国产福利精品导航| 性高潮久久久久久久| 亚洲一二三区在线观看| 久草视频在线免费| 精品国产第一区二区三区观看体验| 精品av中文字幕在线毛片| 欧美刺激性大交免费视频| 在线精品亚洲欧美日韩国产| 亚洲专区中文字幕| 欧洲视频一区| 91九色在线观看视频| 国产一区二区三区观看| 四虎永久免费在线观看| 亚洲午夜在线视频| 国产伦精品一区二区三区视频痴汉| 精品视频一区在线视频| 日韩伦理电影网站| 成人xxxx视频| 禁断一区二区三区在线| 黄色一级视频在线播放| 国产在线精品视频| 人人爽人人爽人人片| 性欧美大战久久久久久久久| 国产精品无码AV| 视频在线观看一区二区| 成人免费网站视频| 国产日韩精品一区观看| 中文一区一区三区免费在线观看| 成人性视频欧美一区二区三区| a在线播放不卡| 久久久久无码国产精品不卡| 欧美高清性hdvideosex| 超碰国产在线| 国产精品扒开腿做爽爽爽男男| 一区二区三区视频免费观看| 和岳每晚弄的高潮嗷嗷叫视频 | 妖精视频一区二区| 亚洲黄色免费网站| 99久久婷婷国产一区二区三区| 中文日韩电影网站| 最新日韩一区| 日本一区视频在线观看| 国产精品一区毛片| www.自拍偷拍| 欧美视频中文字幕在线| 亚洲色欧美另类| 欧洲亚洲女同hd| 亚洲男人都懂第一日本| 国产91对白刺激露脸在线观看| 99re热这里只有精品免费视频| 国产乡下妇女做爰视频| 精品1区2区在线观看| 黄色在线观看视频网站| 成人动漫视频在线观看免费| 欧美久久影院| 精品熟女一区二区三区| 午夜精品久久久久影视| 无码精品人妻一区二区三区影院| 97精品伊人久久久大香线蕉| 欧美日韩直播| 日韩手机在线观看视频| 亚洲国产精品黑人久久久| 中文字幕av网站| 久久久av网站| 欧一区二区三区| 岛国大片在线播放| 久久综合狠狠综合久久综合88| 91在线视频在线观看| 国产一区二区三区网站| 9999精品| 久久艹国产精品| 91伊人久久大香线蕉| 午夜一区二区三区四区| 色久欧美在线视频观看| 精品一区二区三区视频在线播放| 国产成人永久免费视频| 91在线国产福利| 中文字幕欧美人妻精品一区蜜臀| 日韩在线视频国产| 一区二区日韩| 日本va中文字幕| 洋洋av久久久久久久一区| 欧美中文在线| 91美女片黄在线观看游戏| 国产综合欧美| 日韩影视一区二区三区| 日韩一二三区不卡| 老司机成人影院| 97精品国产97久久久久久粉红| 不卡的av电影在线观看| 中文字幕在线播放日韩| 欧美激情在线有限公司| 狠狠综合久久av一区二区蜜桃| 肉色超薄丝袜脚交| 欧美视频一区二区三区…| 秋霞午夜理伦电影在线观看| 精品国产区在线| 久久精品二区亚洲w码| 五月婷婷激情网| 久久亚洲综合国产精品99麻豆精品福利| 都市激情亚洲| 欧美午夜aaaaaa免费视频| 亚洲成a天堂v人片| 免费黄色网页在线观看| 欧美国产视频在线观看| 高清不卡一区二区| 曰批又黄又爽免费视频| 欧美性做爰毛片|