电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

Javascript的繼承與多態

瀏覽:22日期:2023-11-13 16:01:15

本文先對es6發布之前javascript各種繼承實現方式進行深入的分析比較,然后再介紹es6中對類繼承的支持以及優缺點討論。最后介紹了javascript面向對象編程中很少被涉及的“多態”,并提供了“運算符重載”的思路。本文假設你已經知道或了解了js中原型、原型鏈的概念。

es6之前,javascript本質上不能算是一門面向對象的編程語言,因為它對于封裝、繼承、多態這些面向對象語言的特點并沒有在語言層面上提供原生的支持。但是,它引入了原型(prototype)的概念,可以讓我們以另一種方式模仿類,并通過原型鏈的方式實現了父類子類之間共享屬性的繼承以及身份確認機制。其實,面向對象的概念本質上來講不是指某種語言特性,而是一種設計思想。如果你深諳面向對象的編程思想,即使用c這種面向過程的語言也能寫出面向對象的代碼(典型的代表就是windows NT 內核實現),而javascript亦是如此!正是由于javascript本身對面向對象編程沒有一個語言上的支持標準,所以才有了五花八門、令人眼花繚亂的“類繼承”的代碼。所幸,es6增加了class、extends、static等關鍵字用以在語言層面支持面向對象,但是,還是有些保守!我們先列舉出es6之前常見的幾種繼承方案,然后再來一探es6的類繼承機制,最后再討論下javascript多態。

ES6之前的繼承 原型賦值方式

簡而言之,就是直接將父類的一個實例賦給子類的原型。如下示例:

function Person(name){ this.name=name; this.className='person' }Person.prototype.getClassName=function(){ console.log(this.className)}function Man(){}Man.prototype=new Person();//1//Man.prototype=new Person('Davin');//2var man=new Man;>man.getClassName()>'person'>man instanceof Person>true

如代碼中1處所示,這種方法是直接new 了一個父類的實例,然后賦給子類的原型。這樣也就相當于直接將父類原型中的方法屬性以及掛在this上的各種方法屬性全賦給了子類的原型,簡單粗暴!我們再來看看man,它是Man的一個實例,因為man本身沒有getClassName方法,那么就會去原型鏈上去找,找到的是person的getClassName。這種繼承方式下,所有的子類實例會共享一個父類對象的實例,這種方案最大問題就是 子類無法通過父類創建私有屬性 。比如每一個Person都有一個名字,我們在初始化每個Man的時候要指定一個不同名字,然后子類將這個名字傳遞給父類,對于每個man來說,保存在相應person中的name應該是不同的,但是這種方式根本做不到。所以,這種繼承方式,實戰中基本不用!

調用構造函數方式

function Person(name){ this.name=name; this.className='person' }Person.prototype.getName=function(){ console.log(this.name)}function Man(name){ Person.apply(this,arguments)}var man1=new Man('Davin');var man2=new Man('Jack');>man1.name>'Davin'>man2.name>'Jack'>man1.getName() //1 報錯>man1 instanceof Person>true

這里在子類的在構造函數里用子類實例的this去調用父類的構造函數,從而達到繼承父類屬性的效果。這樣一來,每new一個子類的實例,構造函數執行完后,都會有自己的一份資源(name)。但是這種辦法只能繼承父類構造函數中聲明的實例屬性,并沒有繼承父類原型的屬性和方法,所以就找不到getName方法,所以1處會報錯。為了同時繼承父類原型,從而誕生了組合繼承的方式:

組合繼承

function Person(name){ this.name=name||'default name'; //1 this.className='person' }Person.prototype.getName=function(){ console.log(this.name)}function Man(name){ Person.apply(this,arguments)}//繼承原型Man.prototype = new Person();var man1=new Man('Davin');> man1.name>'Davin'> man1.getName()>'Davin'

這個例子很簡單,這樣不僅會繼承構造函數中的屬性,也會復制父類原型鏈中的屬性。但是,有個問題, Man.prototype = new Person(); 這句執行后,Man的原型如下:

> Man.prototype> {name: 'default name', className: 'person'}

也就是說Man的原型中已經有了一個name屬性,而之后創建man1時傳給構造的函數的name則是通過this重新定義了一個name屬性,相當于只是覆蓋掉了原型的name屬性(原型中的name依然還在),這樣很不優雅。

分離組合繼承

這是目前es5中主流的繼承方式,有些人起了一個吊炸天的名字“寄生組合繼承”。首先說明一下,兩者是一回事。分離組合繼承的名字是我起的,一來感覺不裝逼會好點,二來,更確切。綜上所述,其實我們可以將繼承分為兩步:構造函數屬性繼承和建立子類和父類原型的鏈接。所謂的分離就是分兩步走;組合是指同時繼承子類構造函數和原型中的屬性。

function Person(name){ this.name=name; //1 this.className='person' }Person.prototype.getName=function(){ console.log(this.name)}function Man(name){ Person.apply(this,arguments)}//注意此處Man.prototype = Object.create(Person.prototype);var man1=new Man('Davin');> man1.name>'Davin'> man1.getName()>'Davin'

這里用到了 Object.creat(obj) 方法,該方法會對傳入的obj對象進行淺拷貝。和上面組合繼承的主要區別就是:將父類的 原型 復制給了子類原型。這種做法很清晰:

構造函數中繼承父類屬性/方法,并初始化父類。 子類原型和父類原型建立聯系。

還有一個問題,就是constructor屬性,我們來看一下:

> Person.prototype.constructor< Person(name){ this.name=name; //1 this.className='person' }> Man.prototype.constructor< Person(name){ this.name=name; //1 this.className='person' }

constructor是類的構造函數,我們發現,Person和Man實例的constructor指向都是Person,當然,這并不會改變instanceof的結果,但是對于需要用到construcor的場景,就會有問題。所以一般我們會加上這么一句:

Man.prototype.constructor = Man

綜合來看,es5下,這種方式是首選,也是實際上最流行的。

行文至此,es5下的主要繼承方式就介紹完了,在介紹es6繼承之前,我們再往深的看,下面是獨家干貨,我們來看一下Neat.js中的一段簡化源碼(關于Neat.js,這里是傳送門Neat.js官網,待會再安利):

//下面為Neat源碼的簡化-------------------------function Neat(){ Array.call(this)}Neat.prototype=Object.create(Array.prototype)Neat.prototype.constructor=Neat-------------------------//測試代碼var neat=new Neat;>neat.push(1,2,3,4)>neat.length //1>neat[4]=5>neat.length//2>neat.concat([6,7,8])//3

現在提問,上面分割線包起來的代碼塊干了件什么事?

對,就是定義了一個繼承自數組的Neat對象!下面再來看一下下面的測試代碼,先猜猜1、2、3處執行的結果分別是什么?期望的結果應該是:

451,2,3,4,5,6,7,8

而實際上卻是:

44[[1,2,3,4],6,7,8]

吶尼!這不科學啊 !why ?

我曾在阮一峰的一篇文章中看到的解釋如下:

因為子類無法獲得原生構造函數的內部屬性,通過 Array.apply() 或者分配給原型對象都不行。原生構造函數會忽略 apply 方法傳入的 this ,也就是說,原生構造函數的 this 無法綁定,導致拿不到內部屬性。ES5是先新建子類的實例對象 this ,再將父類的屬性添加到子類上,由于父類的內部屬性無法獲取,導致無法繼承原生的構造函數。比如,Array構造函數有一個內部屬性 [[DefineOwnProperty]] ,用來定義新屬性時,更新 length 屬性,這個內部屬性無法在子類獲取,導致子類的 length 屬性行為不正常。

然而,事實并非如此!確切來說,并不是原生構造函數會忽略掉 apply 方法傳入的this而導致屬性無法綁定。要不然1處也不會輸出4了。還有,neat依然可以正常調用push等方法,但繼承之后原型上的方法有些也是有問題的,如neat.concat。其實可以看出,我們通過 Array.call(this) 也是有用的,比如length屬性可用。但是,為什么會出問?根據癥狀,可以肯定的是最終的this肯定有問題,但具體是什么問題呢?難道是我們漏了什么地方導致有遺漏的屬性沒有正常初始化?或者就是瀏覽器初始化數組的過程比較特殊,和自定義對象不一樣?首先我們看第一種可能,唯一漏掉的可能就是數組的靜態方法(上面的所有繼承方式都不會繼承父類靜態方法)。我們可以測試一下:

for(var i in Array){ console.log(i,'xx')}

然而并沒有一行輸出,也就是說Array并沒有靜態方法。當然,這種方法只可以遍歷可枚舉的屬性,如果存在不可枚舉的屬性呢?其實即使有,在瀏覽器看來也應該是數組私有的,瀏覽器不希望你去操作!所以第一種情況pass。那么只可能是第二種情況了,而事實,直到es6出來后,才找到了答案:

ES6允許繼承原生構造函數定義子類,因為ES6是先新建父類的實例對象this,然后再用子類的構造函數修飾this,使得父類的 所有行為 都可以繼承。

請注意我加粗的文字?!八小?,這個詞很微妙,不是“沒有”,那么言外之意就是說es5是部分了。根據我之前的測試(在es5下),下標操作和concat在chrome下是有問題的,而大多數函數都是正常的,當然,不同瀏覽器可能不一樣,這應該也是jQuery每次操作后的結果集以一個新的擴展后的數組的形式返回而不是本身繼承數組(然后再直接返回this的)的主要原因,畢竟jQuery要兼容各種瀏覽器。而Neat.js面臨的問題并沒有這么復雜,只需把有坑的地方繞過去就行。言歸正傳,在es5中,像數組一樣的,瀏覽器不讓我們愉快與之玩耍的對象還有:

Boolean()Number()String()Array()Date()Function()RegExp()Error()Object() es6的繼承方式

es6引入了class、extends、super、static(部分為ES2016標準)

class Person{ //static sCount=0 //1 constructor(name){ this.name=name; this.sCount++; } //實例方法 //2 getName(){ console.log(this.name) } static sTest(){ console.log('static method test') }}class Man extends Person{ constructor(name){ super(name)//3 this.sex='male' }}var man=new Man('Davin')man.getName()//man.sTest()Man.sTest()//4輸出結果:Davinstatic method test

ES6明確規定,Class內部只有靜態方法,沒有靜態屬性,所以1處是有問題的,ES7有一個靜態屬性的 提案 ,目前Babel轉碼器支持。熟悉java的可能對上面的代碼感覺很親切,幾乎是自解釋的。我們大概解釋一下,按照代碼中標號對應:

constructor為構造函數,一個類有一個,相當于es5中構造函數標準化,負責一些初始化工作,如果沒有定義,js vm會定義一個空的默認的構造函數。 實例方法,es6中可以不加'function'關鍵字, class內定義的所有函數都會置于該類的原型當中 ,所以,class本身只是一個語法糖。 構造函數中通過super()調用父類構造函數,如果有super方法,需要時構造函數中第一個執行的語句,this關鍵字在調用super之后才可用。 靜態方法,在類定義的外部只能通過類名調用,內部可以通過this調用,并且靜態函數是會被繼承的。如示例中:sTest是在Person中定義的靜函數,可以通過 Man.sTest() 直接調用。 es6和es5繼承的區別

大多數瀏覽器的ES5實現之中,每一個對象都有 __proto__ 屬性,指向對應的構造函數的prototype屬性。Class作為構造函數的語法糖,同時有prototype屬性和 __proto__ 屬性,因此同時存在兩條繼承鏈。

(1)子類的 __proto__ 屬性,表示構造函數的繼承,總是指向父類。

(2)子類 prototype 屬性的 __proto__ 屬性,表示方法的繼承,總是指向父類的 prototype 屬性。

class A {}class B extends A {}B.__proto__ === A // trueB.prototype.__proto__ === A.prototype // true

上面代碼中,子類 B 的 __proto__ 屬性指向父類 A ,子類 B 的 prototype 屬性的 __proto__ 屬性指向父類 A 的 prototype 屬性。

這樣的結果是因為,類的繼承是按照下面的模式實現的:

class A {}class B {}// B的實例繼承A的實例Object.setPrototypeOf(B.prototype, A.prototype);// B繼承A的靜態屬性Object.setPrototypeOf(B, A);

Object.setPrototypeOf的簡單實現如下:

Object.setPrototypeOf = function (obj, proto) { obj.__proto__ = proto; return obj;}

因此,就得到了上面的結果。

Object.setPrototypeOf(B.prototype, A.prototype);// 等同于B.prototype.__proto__ = A.prototype;Object.setPrototypeOf(B, A);// 等同于B.__proto__ = A;

這兩條繼承鏈,可以這樣理解:作為一個對象,子類( B )的原型( __proto__ 屬性)是父類( A );作為一個構造函數,子類( B )的原型( prototype 屬性)是父類的實例。

Object.create(A.prototype);// 等同于B.prototype.__proto__ = A.prototype; es6繼承的不足 不支持靜態屬性(除函數)。 class中不能定義私有變量和函數。class中定義的所有函數都會被放倒原型當中,都會被子類繼承,而屬性都會作為實例屬性掛到this上。如果子類想定義一個私有的方法或定義一個private 變量,便不能直接在class花括號內定義,這真的很不方便!

總結一下,和es5相比,es6在語言層面上提供了面向對象的部分支持,雖然大多數時候只是一個語法糖,但使用起來更方便,語意化更強、更直觀,同時也給javascript繼承提供一個標準的方式。還有很重要的一點就是-es6支持原生對象繼承。

更多es6類繼承資料請移步:MDN Classess 。

多態

多態(Polymorphism)按字面的意思就是“多種狀態”。在面向對象語言中,接口的多種不同的實現方式即為多態。這是標準定義,在c++中實現多態的方式有虛函數、抽象類、模板,在java中更粗暴,所有函數都是“虛”的,子類都可以重寫,當然java中沒有虛函數的概念,我們暫且把相同簽名的、子類和父類可以有不同實現的函數稱之為虛函數,虛函數和模版(java中的范型)是支持多態的主要方式,因為javascript中沒有模版,所以下面我們只討論虛函數,下面先看一個例子:

function Person(name,age){ this.name=name this.age=age}Person.prototype.toString=function(){ return 'I am a Person, my name is '+ this.name}function Man(name,age){ Person.apply(this,arguments)}Man.prototype = Object.create(Person.prototype);Man.prototype.toString=function(){ return 'I am a Man, my name is'+this.name;}var person=new Person('Neo',19)var man1=new Man('Davin',18)var man2=new Man('Jack',19)> person+''> 'I am a Person, my name is Neo'> man1+''> 'I am a Man, my name isDavin'> man1<man2 //期望比較年齡大小 1> false

上面例子中,我們分別在子類和父類實現了toString方法,其實,在js中上述代碼原理很簡單,對于同名函數,子類會覆父類的,這種特性其實就是虛函數,只不過js中不區分參數個數,也不區分參數類型,只看函數名稱,如果名稱相同就會覆蓋?,F在我們來看注釋1,我們期望直接用比較運算符比較兩個man的大?。ò茨挲g),怎么實現?在c++中有運算符重載,但java和js中都沒有,所幸的是,js可以用一種變通的方法來實現:

function Person(name,age){ this.name=name this.age=age}Person.prototype.valueOf=function(){ return this.age}function Man(name,age){ Person.apply(this,arguments)}Man.prototype = Object.create(Person.prototype);var person=new Person('Neo',19)var man1=new Man('Davin',18)var man2=new Man('Jack',19)var man3=new Man('Joe',19)>man1<19//1>true>person==19//2>true>man1<man2//3>true>man2==man3 //4 注意>true>person==man2//5>false

其中1、2、3、5在所有js vm下結果都是確定的。但是4并不一定!javascript規定,對于比較運算符,如果一個值是對象,另一個值是數字時,會先嘗試調用valueOf,如果valueOf未指定,就會調用toString;如果是字符串時,則先嘗試調用toString,如果沒指定,則嘗試valueOf,如果兩者都沒指定,將拋出一個類型錯誤異常。如果比較的兩個值都是對象時,則比較的時對象的引用地址,所以若是對象,只有自身===自身,其它情況都是false?,F在我們回過頭來看看示例代碼,前三個都是標準的行為。而第四點取決于瀏覽器的實現,如果嚴格按照標準,這應該算是chrome的一個bug ,但是,我們的代碼使用時雙等號,并非嚴格相等判斷,所以瀏覽器的相等規則也會放寬。值得一提的是5,雖然person和man2 age都是19,但是結果卻是false。 總結一下,chrome對相同類的實例比較策略是先會嘗試轉化,然后再比較大小,而對非同類實例的比較,則會直接返回false,不會做任何轉化。 所以我的建議是:如果數字和類實例比較,永遠是安全的,可以放心玩,如果是同類實例之間,可以進行 非等 比較,這個結果是可以保證的,不要進行相等比較,結果是不能保證的,一般相等比較,變通的做法是:

var equal= !(ob1<ob2||ob1>ob2) //不小于也不大于,就是等于,前提是比較操作符兩邊的對象要實現valueOf或toString

當然類似toString、valueOf的還有toJson方法,但它和重載沒有什么關系,故不冗述。

數學運算符

讓對象支持數學運算符本質上和讓對象支持比較運算符原理類似,底層也都是通過valueOf、toString來轉化實現。 但是通過這種覆蓋原始方法模擬的運算符重載有個比較大局限就是:返回值只能是數字!而c++中的運算符重載的結果可以是一個對象 。試想一下,如果我們現在要實現一個復數類的加法,復數包括實部與虛部,加法要同時應用到兩個部分,而相加的結果(返回值)仍然是一個復數對象,這種情況下,javascript也就無能為力了。

總結

本文系統的介紹了javascript類繼承和多態。如要轉載請注明作者和原文鏈接。最后向大家安利一下我的開源項目:Neat.js ,歡迎star。如文中有誤,歡迎斧正。

參考資料

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/valueOf http://es6.ruanyifeng.com/#docs/class

來自:https://juejin.im/post/5912753ba22b9d005817524e

標簽: JavaScript
相關文章:
主站蜘蛛池模板: 国产精久久一区二区三区 | 国产成人精品午夜福利在线观看 | 亚洲色图17p | 国产高清在线不卡 | 午夜精品视频一区 | 天天射天天色天天干 | 欧洲美女x8x8免费视频 | 天天摸天天爽日韩欧美大片 | 97国精产品无人区一码二码 | www亚洲一区二区 | 成人动漫视频在线 | 亚洲视频一二三四 | 国产 日韩 欧美 精品 | 欧美xxxxxx片免费播放软件 | 免费无遮挡在线观看视频网站 | 国产精品乱码久久久久久 | 日韩精品成人无码专区免费 | 乳女教师の诱惑juliamagnet | 欧美黑人性暴力猛交喷水黑人巨大 | 国内精品久久久久久久影视蜜臀 | 日日摸夜夜添狠狠添久久精品成人 | 美女黄色免费网站 | 久久免费视频6 | 欧美精品第三页 | 亚洲国产精品va在线看黑人 | 久久久久女教师免费一区 | av日韩一区 | 久久亚洲私人国产精品 | 国产又粗又猛又大爽老大爷 | 精品国产亚洲一区二区三区 | 成年人在线视频 | 天天摸天天看天天做天天爽 | 国产午夜成人久久无码一区二区 | 日韩电影一区二区三区 | 老女人任你躁久久久久久老妇 | 爱爱视频天天干 | xnxx女第一次 | 欧美在线91| 操韩国美女 | 国产人成高清在线视频99最全资源 | 欧美黑丝少妇 | av福利网站 | 狼色精品人妻在线视频 | 久久日av| 欧美s码亚洲码精品m码 | 婷婷四房综合激情五月 | 一区二区在线国产 | 亚洲裸体视频 | 久久久久久亚洲综合影院红桃 | 毛片.com| 粉嫩欧美一区二区三区 | 亚洲 欧美 中文字幕 | 国产在线青青草 | 亚洲蜜桃精久久久久久久久久久久 | 三级av免费 | 巨胸美女狂喷奶水www | 欧美日韩一区二区在线视频 | 中文字幕日韩有码 | 蜜臀一区二区三区精品免费视频 | 精品国产a | 快播怡红院 | 人妻体内射精一区二区三区 | 国产一区在线看 | 99精品无码一区二区 | 国产精品无码一区二区三区在 | 久草在线最新视频 | 成人国产亚洲 | 少妇高潮疯狂叫床在线91 | 中国黄色a级片 | 日韩精品av一区二区三区 | 亚洲欧美日韩国产手机在线 | 超碰超在线 | 热re99久久精品国产99热 | 99色网站 | 国产精成人品日日拍夜夜免费 | 国产精品久久久久婷婷 | 国产精选在线观看 | 99色99| tushy超清4k欧美极品在线 | 性一交一乱一乱一视频96 | 日本视频一区二区 | 国产r级在线 | 尤物在线网站 | 色婷婷精品久久二区二区蜜臂av | av无码av天天av天天爽 | 夜夜夜夜猛噜噜噜噜噜婷婷 | 性久久久| 成人做爰999| 久久精品久久久久观看99水蜜桃 | 人妻夜夜爽天天爽 | 偷看做性肉体探欲k8 | 欧美一级艳片视频免费观看 | 免费人成视频x8x8 | 日韩免费在线观看 | 欧美视频一区二区三区四区 | 中文无线乱码二三四区 | 久久999精品久久久有什么优势 | 黑人粗硬进入过程视频 | 俄罗斯丰满熟妇hd | 亚洲成年人影院 | 91性高潮久久久久久久 | 成人深夜在线 | 国产成人啪精品 | 一级特黄色毛片 | 成年人免费在线视频 | 女人解开乳罩给男人吃奶 | 五月天久久婷婷 | 黄色大尺度视频 | 亚洲精品一二三区久久伦理中文 | 最近中文字幕免费视频 | 一二三区视频 | 国产又黄又爽又猛免费视频网站 | 国产在线精品一区二区夜色 | 免费无码av片在线观看 | 黑人粗一硬一长一进一爽一a级 | 五月天激情婷婷婷久久 | 中国少妇的呻吟xvideos | 国产毛片aaa | 一级肉体全黄裸片高潮不断 | 日本午夜免费 | 日韩午夜高清 | 91精品久久久久久综合 | avtt香蕉久久| tube中国91xxxxx国产 | 欧美激情一区二区三区视频 | 欧美精品www| 日韩在线国产精品 | 国精品产品区三区 | 午夜精品久久久久久久久久久久 | 久久精品一二三区 | sodjav成人网| 97免费视频观看 | 亚洲男人在线天堂 | 久久香蕉国产线看观看猫咪av | 高潮白浆女日韩av免费看 | 欧美丰满熟妇xxxx | 新婚之夜疯狂做爰视频一区二区 | 天躁狠狠躁 | 午夜精品久久久久久久爽 | 国产一区二区三区四区五区vm | 狠狠干网| 操操操操操操 | 国产山村乱淫老妇av色播 | 日本啪啪片 | 国产精品video爽爽爽爽 | 国产喷水吹潮在线播放91 | 黑人巨大精品欧美一区二区免费 | 国产素人在线观看 | 国产欧美日韩综合精品一 | 国产精品三区在线观看 | 国产精品野外av久久久 | 国内精品伊人久久久久av | 久久99国产精品久久99果冻传媒 | 日韩精品一区二区三区四区视频 | 国产高清精品软件丝瓜软件 | 亚洲不卡av不卡一区二区 | 黄色大全在线观看 | 日本在线h | 女人高潮av国产伦理剧 | 精产国品一二三产区m553麻豆 | 国产精品久久一区二区三区动漫 | 亚洲国产二区 | 亚洲精品久久区二区三区蜜桃臀 | 亚洲精品国产精品色诱一区 | 97自拍视频 | 欧美色就是色 | 在线精品自偷自拍无码 | 欧美乱做爰xxxⅹ久久久 | 亚洲高清久久 | 污动漫网站 | 激情综合色五月丁香六月欧美 | 内射后入在线观看一区 | 免费国产a | 少妇交换做爰中文字幕 | 久久精品综合网 | 久久亚洲国产成人精品性色 | 色播久久人人爽人人爽人人片av | av网站大全免费 | 国产精品91在线 | 伊人成年综合网 | 五月丁香六月激情综合在线视频 | 男女18禁啪啪无遮挡激烈网站 | 伦伦影院午夜理论片 | 国产 日韩 欧美 制服丝袜 | 日本午夜三级视频 | 国产色婷婷精品综合在线 | 老司机午夜福利av无码特黄a | 精品视频麻豆入口 | 无码乱人伦一区二区亚洲一 | 无码少妇一区二区三区芒果 | 午夜福利视频 | 好吊妞在线 | 国产男女免费完整视频 | 中文字幕在线观看视频地址二 | 国产靠逼视频 | 亚洲高清视频在线 | 国内精品伊人久久久久777 | 欧美专区综合 | 欧美一二三级 | 蜜桃臀无码内射一区二区三区 | 国产精品v欧美精品v日韩 | 亚洲成人不卡 | 欧美一级片免费观看 | 精品久久999 | 黄色一级片在线播放 | 四虎精品在线播放 | 亚洲女人av | 久艹视频免费看 | 中文乱码人妻系列一区二区 | 国产乱人偷精品人妻a片 | 你懂的亚洲 | 亚洲国产精品无码久久电影 | 国产成人综合欧美精品久久 | 国产一区二区三区精品视频 | 日韩在线一级片 | 五月婷婷丁香在线 | 一区二区日韩精品 | 99热在线精品国产观看 | 中文成人无字幕乱码精品区 | 亚洲精品美女久久7777777 | 国产日产欧产美一二三区 | 欧美顶级少妇作爱 | 欧美jizzhd精品欧美丰满 | 少妇愉情理伦片丰满丰满午夜 | 天天看天天干 | 九九热免费观看 | 香蕉影院在线观看 | 高潮毛片又色又爽免费 | 邻居少妇张开双腿让我爽一夜图片 | 中国浓毛少妇毛茸茸 | 黄网站在线播放 | 国产一毛片 | 国产特黄aaaaa毛片 | 亚洲视频图片 | 综合网视频 | 国产精品成人网站 | 91丨国产 | 超碰免费在 | 色五月激情五月 | 欧美午夜精品久久久久久蜜 | 亚洲人午夜色婷婷 | 国产尤物在线观看 | 免费黄色亚洲 | 免费观看又色又爽又黄的崩锅 | 亚洲va韩国va欧美va精品 | 玖玖视频在线 | 沙奈朵狂揉下部羞羞动漫 | 午夜久久久久久久 | 国模冰冰炮一区二区 | 你懂的网址国产欧美 | 啪啪tv网站免费入口 | 国产小仙女精品av揉 | 国产毛片18片毛一级特黄 | 茄子视频国产在线观看 | 国产精品视频999 | 国产真实的和子乱拍在线观看 | 天干天干天啪啪夜爽爽av软件 | 色妞视频男女视频 | 亚洲一区二区精品视频 | 奶涨边摸边做爰爽别停快点视频 | 亚洲黄色图片网站 | 成人免费视频一区 | 一女被多男玩喷潮视频 | 五月天婷婷视频 | 人妻在线日韩免费视频 | 综合一区在线 | 特级毛片网站 | 中文字幕日韩伦理 | 国产一区二区中文字幕 | 国产精品av一区二区三区网站 | 国偷自产视频一区二区久 | 波多野结衣一区二区三区高清 | 日韩精品久久中文字幕 | 久久久在线 | 国产高清性xxxxxxxx | 久久伊人蜜桃av一区二区 | 蜜臀久久99精品久久久久久宅男 | 久久国产精品偷 | 亚洲哺乳偷拍哺乳偷拍 | 国产又粗又猛又黄视频 | 少妇被躁爽到高潮无码文 | 最新四季av在线 | 精品久久久久久久久久久国产字幕 | 久久天堂av综合合色蜜桃网 | 国产精品区av | 6699嫩草久久久精品影院竹菊 | www.黄色片 | 综合五月婷 | 亚洲综合色成在线播放 | 非洲黑人狂躁日本妞视频 | 亚洲欧美日韩视频一区 | 亚洲欧美又粗又长久久久 | 无码毛片aaa在线 | 亚洲啪| 午夜福利伦伦电影理论片在线观看 | 翔田千里88av中文字幕 | 美女露出给别人摸图片 | 久久99精品久久久久婷婷 | 国产无遮挡又黄又爽高潮 | 国产精品新婚之夜泄露女同 | 国内精品国产三级国产aⅴ久 | 色呦呦麻豆| 强开小婷嫩苞又嫩又紧视频 | 亚洲精品无码永久在线观看你懂的 | www桃色| 国产精品久久久区三区天天噜 | 日韩黄色免费观看 | 亚洲成人黄 | 国产成人免费一区二区三区 | 911亚洲精品 | 热の国产| 欧美v成 人在线观看 | 婷婷天天 | 精品亚洲成a人无码成a在线观看 | 在线中文字幕网站 | 国内精品久久久久久久97牛牛 | 张柏芝ⅹxxxxhd96 | 少妇裸体做爰免费视频网站 | 国产对白老熟女正在播放 | 亚洲 自拍 都市 欧美 小说 | 开心久久婷婷综合中文字幕 | 亚洲一久久久久久久久 | 欧美精品影院 | 欧美日韩在线精品 | 日韩精品一区二区三区在线视频 | 好吊妞视频这里只有精品 | 免费三级av| 在线色播 | 亚洲一区二区三区不卡视频 | 欧美日韩精品久久 | 中日韩高清无专码区2021 | 欧洲熟妇色xxxx欧美老妇软件 | 国产乱淫a∨片免费观看 | 又色又爽又黄又刺激免费 | 五月激情四射网 | 精品超清无码视频在线观看 | 欧美伦理影院 | 欧美a在线视频 | 国产精品久久久久久妇女 | 久草福利视频 | 久久精品成人免费国产片桃视频 | 国产毛片3 | 国产丝袜一区视频在线观看 | 国产激情久久久久久 | 欧美成人3d啪啪动漫 | 欧美午夜一区二区福利视频 | 亚洲激情视频小说 | 蜜桃av在线免费观看 | 免费性片 | 婷婷久久综合九色综合绿巨人 | 亚洲另类春色校园小说 | 亚洲精品一区二区三区樱花 | 全国最大成人网 | 新超碰在线 | 一区视频在线免费观看 | 中文国产在线观看 | 色哟哟国产精品色哟哟 | 91二区| 少妇高潮流白浆在线观看 | 免费色视频 | 亚洲精品一二三区久久伦理中文 | 中国女人黄色大片 | 成年免费a级毛片 | 国产午夜三级一二三区 | 精品久久久久成人码免费动漫 | 肥臀熟女一区二区三区 | 欧美在线看片a免费观看 | 国产精品一区二区免费在线观看 | 99蜜桃臀精品视频在线观看 | 亚洲青涩网 | 人人妻人人澡人人爽欧美一区九九 | 国产a久久麻豆入口 | 欧美日b片| 国产亚洲精品久久久久久青梅 | 欧美一级色 | 免费看成人aa片无码视频羞羞网 | 精品久久久久久久中文字幕 | 久久精品水蜜桃av综合天堂 | 思热99re视热频这里只精品 | 日本黄网站三级三级三级 | 狠狠色噜噜狠狠狠888777米奇 | 日韩经典一区二区 | 国产男女无遮挡猛进猛出 | 国产山村乱淫老妇av色播 | 国产成人免费爽爽爽视频 | 东北老女人av| 黄色一级片av | 国产亚洲一区二区三区四区 | 中文资源在线观看 | 三级无遮挡| 国产日产久久高清欧美一区 | 性xxxx尼泊尔娇小视频 | 日本少妇搡bbbb搡bbb | 91丨porny丨蝌蚪新疆 | jizz在亚洲 | 免费欧美一级视频 | 亚洲一二三四视频 | 亚洲精品毛片一级91精品 | 17c在线视频在线观看 | 在线不卡一区二区 | 日本五十路岳乱在线观看 | www..com18午夜观看 | 中文字幕乱码免费看电影 | 日日躁夜夜躁狠狠躁超爽2001 | 超碰在线国产97 | 亚洲欧洲成人精品av97 | 亚洲精品在线播放视频 | 91精品国产欧美一区二区成人 | 国产十区| 免费av网站大全 | 九九热这里只有精品6 | 日韩一区网站 | 好吊妞国产欧美日韩免费观看网站 | 午夜时刻免费入口 | 久久这里只有精品99 | 久久亚洲国产成人精品性色 | 免费国产小视频 | 日韩1区| 狠狠综合久久av一区二区 | 色精品视频 | 伊人av影院 | 国产成人无码视频一区二区三区 | 久色视频在线 | 国产人妻人伦精品1国产盗摄 | 窝窝午夜理论片影院 | 成人国产精品一区二区 | 国产男女性潮高清免费网站 | 免费人成再在线观看网站 | 波多野吉衣一区二区 | 欧美一区二区三区四区五区 | 99久热在线精品视频成人一区 | 日本真人做爰免费的视频 | 国产成人精品一区二区三区免费 | 亚洲一区二区日韩 | 日韩精品一区在线 | 欧美久草视频 | 国产精品夫妻视频 | 亚洲一区二区小说 | jizzjizzjizz日本人 | 屁屁影院,国产第一页 | 成人免费黄色网 | 色婷婷综合久久久中文一区二区 | 免费成人av网址 | 国产剧情演绎av | 久久久无码精品亚洲日韩按摩 | 正在播放国产真实哭都没用 | 偷拍激情视频一区二区三区 | 麻豆tv入口在线看 | 国产精品无码午夜免费影院 | 色婷婷精品久久二区二区蜜臂av | 五月天爱爱 | 国产夫妻性生活视频 | 国模小丫大尺度啪啪人体 | 一区二区精品久久 | 亚洲精品无码久久久久 | 又黄又爽又色qq群 | 国产一伦一伦一伦 | 日本黄色的视频 | www.亚洲精品 | 日韩久久影院 | 久久99精品国产麻豆91樱花 | 国产高潮白浆 | 成人国产一区 | 91丨九色丨蝌蚪丨老版 | 精品国产乱码久久久久久鸭王1 | 日韩精品一区二区三区免费视频 | 污污免费观看 | 午夜在线小视频 | 亚洲精品久久久久久中文传媒 | 一级黄色大片 | 青青青免费在线视频 | 国产精品爽爽爽爽爽爽在线观看 | 91久久久久久久久久 | 亚洲精品视频一区二区 | 国产肥白大熟妇bbbb视频 | 日本在线 | 116少妇做爰毛片 | 狠狠色综合网久久久久久 | 精品欧美一区二区三区久久久 | 五月婷香蕉久色在线看 | 欧美牲交videossexeso欧美 | 国产区av| 国产欧美一区二区精品性色超碰 | 极品嫩模高潮叫床 | 2020最新无码福利视频 | 性高朝久久久久久久 | 天天做天天爱夜夜爽 | 日本黄视频在线观看 | 在线看欧美 | 丰满少妇毛茸茸做性极端 | yy成人综合网 | 男人资源网站 | 少妇与大狼拘作爱性a | 狠狠噜狠狠狠狠丁香五月 | aaaaaa黄色片 | 视频免费一区 | 国产激情a | av在线免费观看网站 | 欧美福利专区 | 久久久久免费观看 | 亚洲精品乱码久久久久久按摩观 | 1000部夫妻午夜免费 | 日韩www| 18禁黄久久久aaa片广濑美月 | 国产香蕉精品视频 | 尤物在线观看视频 | 香蕉成人在线视频 | 国产普通话bbwbbwbbw | 日韩三级免费观看 | 精品少妇一区二区三区免费观 | 狠狠色综合网站久久久久久久高清 | 日日鲁夜夜视频热线播放 | 色综合另类小说图片区 | 伊人久久五月丁香综合中文亚洲 | 日韩人妻无码一区二区三区久久99 | 极品少妇xxxx精品少妇偷拍 | 无码人妻黑人中文字幕 | 天堂免费av| a v视频在线观看 | 极品少妇xxxx精品少妇偷拍 | 欧美色淫 | 国内少妇偷人精品免费 | aaaa视频| 日批视屏 | 爽好多水快深点欧美视频 | 国产免费人人看 | 我要干成人网 | 狠狠躁日日躁夜夜躁2022麻豆 | 亚洲日本影院 | 两口子交换真实刺激高潮 | 国产精品一区二区麻豆 | 精品无码国产av一区二区 | 婷婷综合久久 | 日韩亚洲制服丝袜中文字幕 | 杨幂一区二区三区免费看视频 | 夜先锋av资源网站 | 国产91丝袜在线播放 | 制服丝袜亚洲中文综合懂色 | 国产精品久久久久久欧美2021 | 三级av在线播放 | 巨大乳の揉んで乳榨り奶水 | 午夜av一区 | 人人妻一区二区三区 | 国产真实伦视频 | 国产精品国色综合久久 | 久久久久黑人强伦姧人妻 | 亚洲欧美日韩在线不卡 | 无码内射成人免费喷射 | 日韩av无码中文无码不卡电影 | 伊人春色视频 | 免费黄色国产视频 | 少妇玉梅抽搐呻吟 | 少妇白浆高潮无码免费区 | 亚洲一区二区三区日本 | 男男军官互攻互受h啪肉np文 | 丰满熟妇被猛烈进入高清片 | 免费网站永久免费入口 | 91偷拍一区二区三区精品 | 亚瑟av| 曰本无码人妻丰满熟妇啪啪 | 日韩性大片 | 国产做爰视频 | 欧美乱大交xxxxx疯狂俱乐部 | 亚洲狠| 国产美女精品aⅴ在线播放 国产美女精品人人做人人爽 | 精品国产免费一区二区三区香蕉 | 99精品视频免费 | 国产小视频网站 | 午夜福利三级理论电影 | 亚洲精品久久久久久中文传媒 | 国产精品v欧美精品∨日韩 女邻居的大乳中文字幕 | 亚洲日韩激情无码一区 | 日日躁夜夜躁白天躁晚上 | 亚洲成人激情小说 | 丁香五精品蜜臀久久久久99网站 | 99精品一区二区三区无码吞精 | 国产精品爽 | 国产对白不带套毛片av | 91精品久久久久久久久不口人 | 国产丰满大乳奶水 | 老外和中国女人毛片免费视频 | 欧美日韩免费在线 | 国产成人久久精品麻豆二区 | 岳睡了我中文字幕日本 | 国产精品久久久久久久妇 | 国产精品久久久久久久久久直播 | 99精品视频在线观看 | 毛片9| 欧美精品三区 | 日韩中文字幕观看 | 亚洲aⅴ久久精品 | 欧美最猛性xxxxx(亚洲精品) | 色网站在线观看视频 | 91精品国产91久久久久久久久久久久 | 成人国产精品免费网站 | 国产乡下妇女做爰视频 | a级毛片特级毛片 | 在线观看的av网址 | 国产精品96久久久久久 | 国产这里有精品 | 粗大猛烈进出高潮视频大全 | 国产精品久久久久久一二三四五 | 色婷婷丁香 | 97视频在线 | 一本到在线 | 一进一出下面喷白浆九瑶视频 | 一级做a爰片久久毛片a | 国产裸体无遮挡 | 国产无在线观看 | 精品国产乱码久久久久久图片 | 日韩免费网址 | 久久影 | 夜夜躁日日躁狠狠久久88av | 国产欧美黑寡妇久久久 | 国色天香中文字幕在线视频 |