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

一文讀懂Javascript深拷貝與淺拷貝

開發 前端
在 javascript 中有不同的方法來復制對象,如果你還不熟悉這門語言的話,復制對象時就會很容易掉進陷阱里,那么我們怎樣才能正確地復制一個對象呢?

 前言

在 javascript 中有不同的方法來復制對象,如果你還不熟悉這門語言的話,復制對象時就會很容易掉進陷阱里,那么我們怎樣才能正確地復制一個對象呢?

[[330999]]

讀完本文,希望你能明白:

  • 什么是深/淺拷貝,他們跟賦值有何區別?
  • 深/淺拷貝的實現方式有幾種?

淺拷貝與深拷貝

  • 淺拷貝是創建一個新對象,這個對象有著原始對象屬性值的一份精確拷貝。如果屬性是基本類型,拷貝的就是基本類型的值,如果屬性是引用類型,拷貝的就是內存地址 ,所以如果其中一個對象改變了這個地址,就會影響到另一個對象。
  • 深拷貝是將一個對象從內存中完整的拷貝一份出來,從堆內存中開辟一個新的區域存放新對象,且修改新對象不會影響原對象。

 

  1. var a1 = {b: {c: {}}; 
  2.  
  3. var a2 = shallowClone(a1); // 淺拷貝方法 
  4. a2.b.c === a1.b.c // true 新舊對象還是共享同一塊內存 
  5.  
  6. var a3 = deepClone(a3); // 深拷貝方法 
  7. a3.b.c === a1.b.c // false 新對象跟原對象不共享內存 

借助ConardLi大佬以下兩張圖片,幫我們更好的理解兩者的含義:

 

 

 

 

總而言之,淺拷貝只復制指向某個對象的指針,而不復制對象本身,新舊對象還是共享同一塊內存。但深拷貝會另外創造一個一模一樣的對象,新對象跟原對象不共享內存,修改新對象不會改到原對象。

賦值和深/淺拷貝的區別

這三者的區別如下,不過比較的前提都是針對引用類型:

  • 當我們把一個對象賦值給一個新的變量時,賦的其實是該對象的在棧中的地址,而不是堆中的數據。也就是兩個對象指向的是同一個存儲空間,無論哪個對象發生改變,其實都是改變的存儲空間的內容,因此,兩個對象是聯動的。
  • 淺拷貝:重新在堆中創建內存,拷貝前后對象的基本數據類型互不影響,但拷貝前后對象的引用類型因共享同一塊內存,會相互影響。
  • 深拷貝:從堆內存中開辟一個新的區域存放新對象,對對象中的子對象進行遞歸拷貝,拷貝前后的兩個對象互不影響。

我們先來看下面的例子,對比賦值與深/淺拷貝得到的對象修改后對原始對象的影響:

 

  1. // 對象賦值 
  2. let obj1 = { 
  3.     name : '浪里行舟'
  4.     arr : [1,[2,3],4], 
  5. }; 
  6. let obj2 = obj1; 
  7. obj2.name = "阿浪"
  8. obj2.arr[1] =[5,6,7] ; 
  9. console.log('obj1',obj1)  
  10. // obj1 { name'阿浪', arr: [ 1, [ 5, 6, 7 ], 4 ] } 
  11. console.log('obj2',obj2)  
  12. // obj2 { name'阿浪', arr: [ 1, [ 5, 6, 7 ], 4 ] } 

 

  1. // 淺拷貝 
  2. let obj1 = { 
  3.     name : '浪里行舟'
  4.     arr : [1,[2,3],4], 
  5. }; 
  6. let obj3=shallowClone(obj1) 
  7. obj3.name = "阿浪"
  8. obj3.arr[1] = [5,6,7] ; // 新舊對象還是共享同一塊內存 
  9. // 這是個淺拷貝的方法 
  10. function shallowClone(source) { 
  11.     var target = {}; 
  12.     for(var i in source) { 
  13.         if (source.hasOwnProperty(i)) { 
  14.             target[i] = source[i]; 
  15.         } 
  16.     } 
  17.     return target; 
  18. console.log('obj1',obj1)  
  19. // obj1 { name'浪里行舟', arr: [ 1, [ 5, 6, 7 ], 4 ] } 
  20. console.log('obj3',obj3)  
  21. // obj3 { name'阿浪', arr: [ 1, [ 5, 6, 7 ], 4 ] } 

 

  1. // 深拷貝 
  2. let obj1 = { 
  3.     name : '浪里行舟'
  4.     arr : [1,[2,3],4], 
  5. }; 
  6. let obj4=deepClone(obj1) 
  7. obj4.name = "阿浪"
  8. obj4.arr[1] = [5,6,7] ; // 新對象跟原對象不共享內存 
  9. // 這是個深拷貝的方法 
  10. function deepClone(obj) { 
  11.     if (obj === nullreturn obj;  
  12.     if (obj instanceof Datereturn new Date(obj); 
  13.     if (obj instanceof RegExp) return new RegExp(obj); 
  14.     if (typeof obj !== "object"return obj; 
  15.     let cloneObj = new obj.constructor(); 
  16.     for (let key in obj) { 
  17.       if (obj.hasOwnProperty(key)) { 
  18.         // 實現一個遞歸拷貝 
  19.         cloneObj[key] = deepClone(obj[key]); 
  20.       } 
  21.     } 
  22.     return cloneObj; 
  23. console.log('obj1',obj1)  
  24. // obj1 { name'浪里行舟', arr: [ 1, [ 2, 3 ], 4 ] } 
  25. console.log('obj4',obj4)  
  26. // obj4 { name'阿浪', arr: [ 1, [ 5, 6, 7 ], 4 ] } 

上面例子中,obj1是原始對象,obj2是賦值操作得到的對象,obj3淺拷貝得到的對象,obj4深拷貝得到的對象,通過下面的表格,我們可以很清晰看到他們對原始數據的影響:

 

 

 

 

淺拷貝的實現方式

1.Object.assign()

Object.assign() 方法可以把任意多個的源對象自身的可枚舉屬性拷貝給目標對象,然后返回目標對象。

 

  1. let obj1 = { person: {name"kobe", age: 41},sports:'basketball' }; 
  2. let obj2 = Object.assign({}, obj1); 
  3. obj2.person.name = "wade"
  4. obj2.sports = 'football' 
  5. console.log(obj1);  
  6. // { person: { name'wade', age: 41 }, sports: 'basketball' } 

2.函數庫lodash的_.clone方法

該函數庫也有提供_.clone用來做 Shallow Copy,后面我們會再介紹利用這個庫實現深拷貝。

 

  1. var _ = require('lodash'); 
  2. var obj1 = { 
  3.     a: 1, 
  4.     b: { f: { g: 1 } }, 
  5.     c: [1, 2, 3] 
  6. }; 
  7. var obj2 = _.clone(obj1); 
  8. console.log(obj1.b.f === obj2.b.f); 
  9. // true 

3.展開運算符...

展開運算符是一個 es6 / es2015特性,它提供了一種非常方便的方式來執行淺拷貝,這與 Object.assign ()的功能相同。

 

  1. let obj1 = { name'Kobe', address:{x:100,y:100}} 
  2. let obj2= {... obj1} 
  3. obj1.address.x = 200; 
  4. obj1.name = 'wade' 
  5. console.log('obj2',obj2)  
  6. // obj2 { name'Kobe', address: { x: 200, y: 100 } } 

4.Array.prototype.concat()

 

  1. let arr = [1, 3, { 
  2.     username: 'kobe' 
  3.     }]; 
  4. let arr2 = arr.concat();     
  5. arr2[2].username = 'wade'
  6. console.log(arr);  
  7. //[ 1, 3, { username: 'wade' } ] 

5.Array.prototype.slice()

 

  1. let arr = [1, 3, { 
  2.     username: ' kobe' 
  3.     }]; 
  4. let arr3 = arr.slice(); 
  5. arr3[2].username = 'wade' 
  6. console.log(arr);  
  7. // [ 1, 3, { username: 'wade' } ] 

深拷貝的實現方式

1.JSON.parse(JSON.stringify())

 

  1. let arr = [1, 3, { 
  2.     username: ' kobe' 
  3. }]; 
  4. let arr4 = JSON.parse(JSON.stringify(arr)); 
  5. arr4[2].username = 'duncan';  
  6. console.log(arr, arr4) 

 

這也是利用JSON.stringify將對象轉成JSON字符串,再用JSON.parse把字符串解析成對象,一去一來,新的對象產生了,而且對象會開辟新的棧,實現深拷貝。

 

 

這種方法雖然可以實現數組或對象深拷貝,但不能處理函數和正則,因為這兩者基于JSON.stringify和JSON.parse處理后,得到的正則就不再是正則(變為空對象),得到的函數就不再是函數(變為null)了。

比如下面的例子:

 

  1. let arr = [1, 3, { 
  2.     username: ' kobe' 
  3. },function(){}]; 
  4. let arr4 = JSON.parse(JSON.stringify(arr)); 
  5. arr4[2].username = 'duncan';  
  6. console.log(arr, arr4) 

 

 

 

2.函數庫lodash的_.cloneDeep方法

該函數庫也有提供_.cloneDeep用來做 Deep Copy

 

  1. var _ = require('lodash'); 
  2. var obj1 = { 
  3.     a: 1, 
  4.     b: { f: { g: 1 } }, 
  5.     c: [1, 2, 3] 
  6. }; 
  7. var obj2 = _.cloneDeep(obj1); 
  8. console.log(obj1.b.f === obj2.b.f); 
  9. // false 

3.jQuery.extend()方法

jquery 有提供一個$.extend可以用來做 Deep Copy

 

  1. $.extend(deepCopy, target, object1, [objectN])//第一個參數為true,就是深拷貝 

 

  1. var $ = require('jquery'); 
  2. var obj1 = { 
  3.     a: 1, 
  4.     b: { f: { g: 1 } }, 
  5.     c: [1, 2, 3] 
  6. }; 
  7. var obj2 = $.extend(true, {}, obj1); 
  8. console.log(obj1.b.f === obj2.b.f);  
  9. // false 

4.手寫遞歸方法

遞歸方法實現深度克隆原理:遍歷對象、數組直到里邊都是基本數據類型,然后再去復制,就是深度拷貝。

有種特殊情況需注意就是對象存在循環引用的情況,即對象的屬性直接的引用了自身的情況,解決循環引用問題,我們可以額外開辟一個存儲空間,來存儲當前對象和拷貝對象的對應關系,當需要拷貝當前對象時,先去存儲空間中找,有沒有拷貝過這個對象,如果有的話直接返回,如果沒有的話繼續拷貝,這樣就巧妙化解的循環引用的問題。關于這塊如有疑惑,請仔細閱讀ConardLi大佬如何寫出一個驚艷面試官的深拷貝?這篇文章。

 

  1. function deepClone(obj, hash = new WeakMap()) { 
  2.   if (obj === nullreturn obj;  
  3.   // 如果是null或者undefined我就不進行拷貝操作 
  4.   if (obj instanceof Datereturn new Date(obj); 
  5.   if (obj instanceof RegExp) return new RegExp(obj); 
  6.   // 可能是對象或者普通的值  如果是函數的話是不需要深拷貝 
  7.   if (typeof obj !== "object"return obj; 
  8.   // 是對象的話就要進行深拷貝 
  9.   if (hash.get(obj)) return hash.get(obj); 
  10.   let cloneObj = new obj.constructor(); 
  11.   // 找到的是所屬類原型上的constructor,而原型上的 constructor指向的是當前類本身 
  12.   hash.set(obj, cloneObj); 
  13.   for (let key in obj) { 
  14.     if (obj.hasOwnProperty(key)) { 
  15.       // 實現一個遞歸拷貝 
  16.       cloneObj[key] = deepClone(obj[key], hash); 
  17.     } 
  18.   } 
  19.   return cloneObj; 
  20. let obj = { name: 1, address: { x: 100 } }; 
  21. obj.o = obj; // 對象存在循環引用的情況 
  22. let d = deepClone(obj); 
  23. obj.address.x = 200; 
  24. console.log(d); 

 

 

責任編輯:華軒 來源: 前端工匠
相關推薦

2019-02-25 08:58:16

Python深拷貝淺拷貝

2023-09-22 12:21:33

Python深拷貝淺拷貝

2020-10-12 08:35:22

JavaScript

2022-09-27 13:34:49

splice零拷貝原理

2021-07-16 12:33:24

Javascript深拷貝淺拷貝

2023-05-17 08:42:46

深拷貝Golang

2021-01-08 06:15:09

深拷貝淺拷貝寫時拷貝

2024-03-15 15:03:23

2009-05-19 17:28:44

深拷貝淺拷貝clone()

2021-09-27 11:07:11

深拷貝淺拷貝內存

2025-04-27 09:45:58

JavaScript深拷貝淺拷貝

2018-09-26 14:37:17

JavaScript前端編程語言

2017-05-24 11:54:55

Javascript深拷貝

2017-08-16 13:30:05

Java深拷貝淺拷貝

2018-05-10 14:20:18

前端JavaScript深拷貝

2024-04-17 09:01:08

Python深拷貝淺拷貝

2022-07-26 08:07:03

Python淺拷貝深拷貝

2022-11-07 11:37:27

深拷貝淺拷貝底層

2020-08-03 08:24:26

原型模式拷貝

2024-02-05 22:56:16

C++拷貝開發
點贊
收藏

51CTO技術棧公眾號

在线看无码的免费网站| 国产精品久久久久久久久久三级 | 国产精品综合| 在线日韩第一页| 伊人久久久久久久久| 在线能看的av网址| 亚洲视频网在线直播| 久久99欧美| 国产sm主人调教女m视频| 亚洲一区二区三区免费在线观看 | www.综合网.com| 国产精品久久久久久久久动漫 | 欧美色播在线播放| 五月天综合婷婷| 飘雪影院手机免费高清版在线观看| 免播放器亚洲一区| 97精品免费视频| 在线观看美女av| 奇米色欧美一区二区三区| 日韩欧美国产高清| 手机在线看福利| 日韩电影免费看| 一区二区三区欧美激情| 亚洲精品日韩在线观看| 婷婷五月综合激情| 国产精品乡下勾搭老头1| 国产福利精品视频| 日韩综合在线观看| 99精品免费| 欧美激情在线有限公司| 永久av免费网站| 欧美先锋资源| 国产一区二区三区四区福利| 国产ts丝袜人妖系列视频| 91精品啪在线观看国产爱臀| 欧美高清hd18日本| 国产又大又黄又猛| 性欧美1819sex性高清| 欧美午夜女人视频在线| 少妇高潮喷水在线观看| av中文字幕在线看| 香蕉加勒比综合久久| 久久艹国产精品| 日日夜夜天天综合入口| 一区二区三区免费观看| 日韩一级片一区二区| 男人的天堂在线视频免费观看| 久久精品免视看| 免费影院在线观看一区| 日本亚洲一区| 久久综合九色欧美综合狠狠| 成人免费视频网站入口| 亚洲国产精品国自产拍久久| 国产福利精品导航| 成人做爰66片免费看网站| www国产一区| 成人综合婷婷国产精品久久免费| 成人免费91在线看| 色呦呦免费观看| av不卡在线播放| 久久av免费一区| 欧美18xxxxx| 国产农村妇女精品| 中文字幕一区综合| 羞羞的视频在线看| 亚洲电影第三页| 国产美女无遮挡网站| 亚洲优女在线| 精品视频一区二区三区免费| 色婷婷一区二区三区av免费看| 91精品网站在线观看| 91精品国产综合久久福利软件| 天天操精品视频| youjizz亚洲| 国产视频久久久| 国产18无套直看片| 欧美在线影院| 91av福利视频| 一级黄色短视频| 国产.精品.日韩.另类.中文.在线.播放 | 日韩黄色在线视频| 日韩高清一区在线| 成人在线视频福利| 免费看日韩av| 久久亚洲精精品中文字幕早川悠里| 午夜视频久久久| 神马午夜伦理不卡 | 全球av集中精品导航福利| 亚洲视频一区二区| 丁香花五月激情| 在线亚洲观看| 91在线精品播放| 欧美色视频免费| 亚洲免费伊人电影| 国产三区在线视频| 精品精品视频| 国产午夜精品一区二区三区| 国产一二三区精品| 久久电影一区| y111111国产精品久久婷婷| 青青草观看免费视频在线| 亚洲色大成网站www久久九九| 阿v天堂2018| 天天综合91| 国产视频在线一区二区| www.超碰在线观看| 日韩精品一二三| 国产高清一区视频| 毛片av在线| 在线一区二区观看| 这里只有精品在线观看视频| 婷婷综合亚洲| 国产v综合ⅴ日韩v欧美大片| 黄色aaa毛片| 18涩涩午夜精品.www| 黑鬼大战白妞高潮喷白浆| 57pao国产一区二区| 精品国模在线视频| 无码一区二区三区在线观看| 丁香婷婷综合网| 无码人妻aⅴ一区二区三区日本| 欧美第一视频| 日韩成人在线播放| 国产亚洲精品av| 九一九一国产精品| 深田咏美在线x99av| 中文字幕乱码中文乱码51精品| 精品欧美乱码久久久久久1区2区| 日本成人精品视频| 日本欧美一区二区三区乱码| 裸模一区二区三区免费| 2020日本在线视频中文字幕| 日韩欧美国产一二三区| 欧美日韩在线视频免费| 极品美女销魂一区二区三区| 亚洲精品高清国产一线久久| 精品网站在线| 一区二区三区四区视频| 99超碰在线观看| 337p粉嫩大胆色噜噜噜噜亚洲| 男女啪啪免费视频网站| 久久精品一级| 色综合久久88| 亚洲成人中文字幕在线| 亚洲自拍欧美精品| 香蕉视频免费网站| 亚洲精品1区| 久久国产精品久久精品国产| 日韩影院在线| 亚洲欧美日本另类| 中文字幕欧美色图| 中文字幕一区二区在线播放| 午夜免费视频网站| 欧美日韩理论| 国语精品中文字幕| 亚洲国产福利| 中文字幕精品国产| 国产精品久久久久久久久久久久久久久久 | 精品一区免费观看| 91在线视频免费91| 茄子视频成人免费观看| 奇米色欧美一区二区三区| 国产精品三级网站| 国产超级va在线视频| 欧美xxxxx牲另类人与| 国产一级一级片| 久久综合色一综合色88| 91色国产在线| 亚洲精品网址| 精品免费二区三区三区高中清不卡 | 做a视频在线观看| 欧美黄色一区| 蜜桃在线一区二区三区精品| 主播大秀视频在线观看一区二区| 北条麻妃99精品青青久久| 丰满人妻一区二区三区四区53 | 日韩a在线播放| 成人精品影院| av日韩免费电影| 亚洲性受xxx喷奶水| 日韩在线观看免费高清| 国产成人自拍一区| 欧美在线观看视频一区二区| www色aa色aawww| 97久久精品人人做人人爽50路| 五月婷婷六月合| 欧美日韩理论| 午夜精品区一区二区三| 亚洲专区**| 国产精品国产三级国产aⅴ浪潮| www免费在线观看| 亚洲老司机av| 亚洲女人18毛片水真多| 欧美综合天天夜夜久久| 久久久精品99| 国产精品色婷婷| xxxx黄色片| 精品一区二区国语对白| 美女福利视频在线| 欧美三区不卡| japanese在线视频| 亚洲伊人春色| 国产精品一区视频| 日韩一级特黄| 国产99久久精品一区二区永久免费| 国产精品实拍| 一区二区在线免费视频| 日韩三级电影网| 日韩欧美在线综合网| 亚洲图片小说视频| 色呦呦国产精品| 亚洲国产精一区二区三区性色| 国产精品久久久久三级| 亚洲激情视频小说| eeuss鲁片一区二区三区在线观看| www.久久久久久久久久久| 久久久蜜桃一区二区人| 日韩欧美不卡在线| 欧美久久综合| 在线观看日韩羞羞视频| 欧美特黄一级大片| 美脚丝袜一区二区三区在线观看| 亚洲小说春色综合另类电影| 亚洲精品免费网站| 日本午夜精品久久久久| 国产精品极品美女在线观看免费| 亚洲美女尤物影院| 国产91成人在在线播放| 国产精品原创| 性欧美视频videos6一9| 色操视频在线| 欧美日韩成人精品| 四虎亚洲成人| 久久久久久久激情视频| 久久不射影院| 久久久久九九九九| av在线小说| 98精品国产自产在线观看| а√天堂中文在线资源8| 欧美精品videossex性护士| 黄色影院在线看| 久久久久亚洲精品国产| 欧美巨大xxxx做受沙滩| 久久久爽爽爽美女图片| xxxx视频在线| 91av中文字幕| 亚洲综合在线电影| 国产精品黄色av| 四虎国产精品免费久久| 91久久精品一区| 亚洲精品v亚洲精品v日韩精品| 91传媒视频免费| 91麻豆精品激情在线观看最新| 99在线首页视频| 国产 日韩 欧美 综合 一区| 国产一区免费在线| 奇米亚洲欧美| 亚洲一区在线免费| 欧美激情1区2区| 91九色在线观看视频| 麻豆精品网站| 中文字幕永久有效| 粉嫩久久99精品久久久久久夜| 国产老熟女伦老熟妇露脸| 久久天堂av综合合色蜜桃网| 女人又爽又黄免费女仆| 中文字幕一区二区三| 精品无码人妻一区二区三区品 | 欧美极品美女电影一区| 性国裸体高清亚洲| 国产精选久久久久久| 日韩成人在线观看视频| 精品卡一卡二| 久久久影院免费| 国产乱子伦精品无码专区| 国产精品人人爽人人做我的可爱| 在线免费av播放| 国产a区久久久| 精品少妇一区二区三区免费观| 国产精品乱码妇女bbbb| 久久久精品一区二区涩爱| 一本大道久久a久久精品综合| 伊人久久亚洲综合| 精品国产一区二区三区忘忧草 | 亚洲亚洲人成综合网络| 亚洲 欧美 日韩 在线| 欧美一区日本一区韩国一区| 天天综合网在线| 久久天天躁狠狠躁夜夜av| 国产福利片在线观看| 国产欧美日韩中文| 日韩成人午夜| 国产人妻人伦精品| 日韩成人精品在线| 最新国产精品自拍| 一区二区中文字幕在线| 国产午夜性春猛交ⅹxxx| 在线成人免费视频| 国产精品天堂| 久久久在线视频| 国产精品中文| 日日噜噜噜噜夜夜爽亚洲精品| 欧美午夜不卡| 天天影视色综合| 久久久亚洲精品一区二区三区| 黄色一级免费视频| 欧美乱妇15p| 国产www.大片在线| 91a在线视频| 黄色欧美网站| www.国产亚洲| 韩国av一区二区三区| 制服 丝袜 综合 日韩 欧美| 亚洲v日本v欧美v久久精品| 国产精品特级毛片一区二区三区| 亚洲精品资源美女情侣酒店| 丁香花电影在线观看完整版| 国产自摸综合网| 成人在线免费视频观看| 免费裸体美女网站| 99久久综合精品| 国产精品99精品| 欧美α欧美αv大片| 免费黄色在线| 国产有码在线一区二区视频| 精品免费一区二区| 午夜免费精品视频| 欧美国产一区视频在线观看| 欧美精品一二三四区| 日韩电影大片中文字幕| 涩涩av在线| 精品在线不卡| 宅男噜噜噜66一区二区| 少妇被狂c下部羞羞漫画| 亚洲大型综合色站| 理论片中文字幕| 海角国产乱辈乱精品视频| 亚洲1区在线观看| 日韩激情视频一区二区| 国产成人精品一区二区三区四区| 欧洲猛交xxxx乱大交3| 日韩视频一区二区三区在线播放| 成人在线app| 91黄在线观看| 亚洲欧洲日本mm| 少妇精品一区二区| 色噜噜狠狠一区二区三区果冻| 精品视频三区| 国产精品一区二区三区毛片淫片| 精品盗摄女厕tp美女嘘嘘| 欧美三级理论片| 亚洲欧洲av在线| www.久久综合| 久久久综合av| 综合色就爱涩涩涩综合婷婷| 毛片一区二区三区四区| 日本一区二区三级电影在线观看 | 成年人看的毛片| 91免费在线视频观看| 加勒比在线一区| 日韩专区在线播放| 99久久久国产| 国产av人人夜夜澡人人爽麻豆| 99riav久久精品riav| 欧美性猛交xxxx乱大交hd| 最好看的2019年中文视频| 精品国产乱码一区二区三区| 草草视频在线免费观看| 国产日韩欧美激情| 国产精品久久久久久69| 午夜精品三级视频福利| 国产一区二区精品久| 亚洲色图欧美自拍| 精品免费在线观看| 午夜免费视频在线国产| 成人激情直播| 久久在线91| 欧美人妻精品一区二区三区| 亚洲男人的天堂网站| 中文字幕成人| 国产熟女高潮视频| 亚洲人成精品久久久久久 | 日韩成人在线看| 粗暴91大变态调教| 亚洲精品videosex极品| 精品视频二区| 999国内精品视频在线| 模特精品在线| 国产精品三区在线观看| 日韩av在线网址| 国产区一区二| 男人操女人免费| 亚洲一区在线观看免费| 草碰在线视频| 久久99精品久久久久久秒播放器| 美国一区二区三区在线播放 | 久99久在线| 国产精品综合av一区二区国产馆| 欧美亚洲另类小说| 97国产精品免费视频|