Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 国产第一草草影院,日韩一级片在线观看,99视频在线看观免费

          整合營(yíng)銷服務(wù)商

          電腦端+手機(jī)端+微信端=數(shù)據(jù)同步管理

          免費(fèi)咨詢熱線:

          最好用的深拷貝方法?分享 1 段優(yōu)質(zhì) JS 代碼片段

          最好用的深拷貝方法?分享 1 段優(yōu)質(zhì) JS 代碼片段!

          內(nèi)容首發(fā)于工粽號(hào):程序員大澈,每日分享一段優(yōu)質(zhì)代碼片段,歡迎關(guān)注和投稿!

          大家好,我是大澈!

          本文約 900+ 字,整篇閱讀約需 1 分鐘。

          今天分享一段優(yōu)質(zhì) JS 代碼片段,輕松實(shí)現(xiàn)了對(duì)象間的深度克隆。

          老規(guī)矩,先閱讀代碼片段并思考,再看代碼解析再思考,最后評(píng)論區(qū)留下你的見解!

          const a={ x: 1, y: { y1: 'a' }, z: new Set([1, 2]) };
          const b=structuredClone(a); 
          // a !==b, a.y !==b.y, a.z !==b.z


          分享原因

          這段代碼展示了 structuredClone 方法在深度復(fù)制對(duì)象方面的應(yīng)用,這對(duì)于處理復(fù)雜的數(shù)據(jù)結(jié)構(gòu)非常有用。

          它比 JSON.parse(JSON.stringify()) 方法更安全,能避免一些類型轉(zhuǎn)換問題,例如:保留日期對(duì)象的原有類型,而不是轉(zhuǎn)換為字符串。

          這個(gè)方法相對(duì)簡(jiǎn)便易用,只需將需要拷貝的對(duì)象作為參數(shù)傳入即可,項(xiàng)目中推薦去使用!

          代碼解析

          1. const a={ ... };

          這里定義了一個(gè)名為 a 的對(duì)象,它包含一個(gè)基本類型的屬性 x,一個(gè)嵌套對(duì)象 y ,以及一個(gè) Set 類型的屬性 z 。

          2. structuredClone(a);

          structuredClone() 是 JavaScript 中用于深拷貝對(duì)象的方法。

          它使用結(jié)構(gòu)化克隆算法創(chuàng)建給定值的深層拷貝。

          語法是 structuredClone(value, { transfer }) :

          value:被克隆的對(duì)象,可以是任何結(jié)構(gòu)化克隆支持的類型。

          transfer(可選參數(shù)):是一個(gè)可轉(zhuǎn)移對(duì)象的數(shù)組,里面的值并沒有被克隆,而是被轉(zhuǎn)移到被拷貝對(duì)象上。

          支持多種類型:可以復(fù)制大多數(shù)內(nèi)置值,如數(shù)組、普通對(duì)象、日期(Date)、正則表達(dá)式(RegExp)、集合(Set)、映射(Map)等,還包括一些 Web API 類型,如 AudioData、Blob、CryptoKey 等。

          但它的一些限制也不可忽略:

          不支持拷貝函數(shù),嘗試復(fù)制函數(shù)會(huì)導(dǎo)致 DataCloneError 異常。

          不支持 DOM 節(jié)點(diǎn),復(fù)制 DOM 節(jié)點(diǎn)也會(huì)引發(fā)異常。

          不復(fù)制屬性描述符、setter 和 getter 等元數(shù)據(jù)屬性,getter 屬性的值會(huì)被復(fù)制,但 getter 函數(shù)本身不會(huì)被復(fù)制。

          不遍歷或復(fù)制對(duì)象原型,克隆后的對(duì)象不再屬于原始構(gòu)造函數(shù)的實(shí)例,不過其屬性會(huì)被復(fù)制。

          在 Web Workers 中的支持不完全,具體可查看 MDN 瀏覽器兼容性表。在不支持的平臺(tái)上,可以使用 polyfill 來模擬該方法。

          最后,附上兼容性

          . 關(guān)于DOM

          文檔對(duì)象模型(DocumentObject Model),是基于瀏覽器編程的一套API接口,W3C出臺(tái)的推薦標(biāo)準(zhǔn),每個(gè)瀏覽器都有一些細(xì)微的差別,其中以Mozilla(火狐)的瀏覽器最與標(biāo)準(zhǔn)接近。

          通過 DOM,可以訪問所有的 HTML元素,連同它們所包含的文本和屬性。可以對(duì)其中的內(nèi)容進(jìn)行修改和刪除,同時(shí)也可以創(chuàng)建新的元素。


          2. 動(dòng)態(tài)改變文檔內(nèi)容

          要想對(duì)頁面的內(nèi)容做修改,需要如下方式來操作:

          ? a.解析文檔(如HTML)并生成DOM樹

          ? b.通過DOM提供的屬性和方法,獲取或改變文檔的內(nèi)容

          2.1 DOM的節(jié)點(diǎn)

          HTML 文檔中的每個(gè)成分都是一個(gè)節(jié)點(diǎn)(Node)

          DOM 是這樣規(guī)定的:

          • 整個(gè)文檔是一個(gè)文檔節(jié)點(diǎn)
          • 每個(gè) HTML 標(biāo)簽是一個(gè)元素節(jié)點(diǎn)
          • 包含在 HTML 元素中的文本是文本節(jié)點(diǎn)
          • 每一個(gè) HTML 屬性是一個(gè)屬性節(jié)點(diǎn)
          • 注釋屬于注釋節(jié)點(diǎn)

          2.1.1 節(jié)點(diǎn)間的關(guān)系

          節(jié)點(diǎn)彼此都有等級(jí)關(guān)系

          父節(jié)點(diǎn)、子節(jié)點(diǎn)、兄弟節(jié)點(diǎn)(同級(jí)節(jié)點(diǎn))

          2.2 DOM標(biāo)準(zhǔn)接口

          W3C提供了三類DOM標(biāo)準(zhǔn)接口,如下:

          ? a. 核心DOM,適用于各種結(jié)構(gòu)化文檔

          ? b.HTML DOM,專用于HTML文檔

          c. XML DOM,專用于XML文檔


          3. 核心DOM操作

          3.1 訪問節(jié)點(diǎn)

          訪問節(jié)點(diǎn)兼容處理

          getElement系列方法

          使用getElement系列方法來訪問指定的節(jié)點(diǎn)

          • getElementById():返回對(duì)擁有指定id的第一個(gè)對(duì)象的引用
          • getElementsByTagName():返回帶有指定名稱的對(duì)象集合
          • getElementsByClassName():返回指定的類選擇器的集合
          • getElementsByName():返回帶有指定名稱的對(duì)象集合(注意不是所有標(biāo)簽都有name屬性)

          3.1.1 節(jié)點(diǎn)信息1

          每個(gè)節(jié)點(diǎn)都擁有包含節(jié)點(diǎn)某些信息的屬性

          • nodeName(節(jié)點(diǎn)名稱)
          • nodeValue(節(jié)點(diǎn)值)
          • nodeType(節(jié)點(diǎn)類型)

          3.1.2 節(jié)點(diǎn)信息2

          nodeName

          • 元素節(jié)點(diǎn)的 nodeName (節(jié)點(diǎn)名稱)是標(biāo)簽名稱
          • 屬性節(jié)點(diǎn)的 nodeName 是屬性名稱
          • 文本節(jié)點(diǎn)的 nodeName 永遠(yuǎn)是 #text
          • 文檔節(jié)點(diǎn)的 nodeName 永遠(yuǎn)是 #document

          nodeValue

          • 對(duì)于文本節(jié)點(diǎn),nodeValue 屬性包含文本
          • 對(duì)于屬性節(jié)點(diǎn),nodeValue 屬性包含屬性值

          nodeType

          • 元素 1 、屬性 2、 文本 3、 注釋 8、 文檔 9
          • 上面不同的數(shù)值代表不同的節(jié)點(diǎn)類型

          3.2 創(chuàng)建和操作節(jié)點(diǎn)

          3.2.1 主要方法

          方法 說 明

          createElement( tagName) 創(chuàng)建一個(gè)名為tagName的新元素節(jié)點(diǎn),用法Document.createElement(標(biāo)簽名)

          ANode.appendChild( BNode) 把子節(jié)點(diǎn)B追加到父節(jié)點(diǎn)A里面的末尾

          insertBefore( ANode,BNode ) 把A節(jié)點(diǎn)插入到B節(jié)點(diǎn)之前

          Node.loneNode(deep) deep為true則復(fù)制該節(jié)點(diǎn)以及該節(jié)點(diǎn)的所有子節(jié)點(diǎn),為false則只復(fù)制該節(jié)點(diǎn)和其屬性


          3.2.2 操作節(jié)點(diǎn)的屬性


          3.3 刪除和替換節(jié)點(diǎn)

          方法 說 明

          removeChild( node) 刪除指定的節(jié)點(diǎn)(用父級(jí)元素去調(diào)用它)

          replaceChild( newNode, oldNode) 用newNode來替換oldNode(https://www.cnblogs.com/zzq919101/p/6017152.html)

          3.3.1 removeChild()示例代碼如下

          var tb = document.getElementById("tb");
          //先找到要?jiǎng)h除的節(jié)點(diǎn),這里要?jiǎng)h除一行
          var tr = tb.lastChild.lastChild;
          //這里也需要父節(jié)點(diǎn)操作子節(jié)點(diǎn)
          tr.parentNode.removeChild(tr);???

          3.3.2 replaceChild()示例代碼

          var tb = document.getElementById("tb");
          var tr = document.createElement("tr");
          var td1 = document.createElement("td");
          var td2 = document.createElement("td");
          td1.innerHTML = "我的內(nèi)容1";
          td2.innerHTML = "我的內(nèi)容2";
          tr.appendChild(td1);
          tr.appendChild(td2);
          
          //父節(jié)點(diǎn)操作子節(jié)點(diǎn)
          //兩個(gè)參數(shù),第一個(gè)表示新節(jié)點(diǎn),第二個(gè)表示舊節(jié)點(diǎn),這里用心節(jié)點(diǎn)替換舊節(jié)點(diǎn)
          tb.lastChild.replaceChild(tr,tb.lastChild.firstChild);??

          3.4 其他

          id,value等操作

          innerHTML和innerText的區(qū)別

          • 如果內(nèi)容中有html標(biāo)簽,使用innerHTML時(shí),內(nèi)容中的html標(biāo)簽會(huì)被解析出來,而使用innerText時(shí),html只會(huì)被當(dāng)作文本顯示出來

          元素.style.樣式

          className

          3.5 示例

          代碼1:

          結(jié)果1:

          代碼2:

          結(jié)果2:

          代碼3:

          結(jié)果3:


          4. HTML DOM操作

          ? HTML文檔中的每個(gè)節(jié)點(diǎn),都是DOM對(duì)象,每個(gè)DOM對(duì)象都有屬于自己的屬性和方法.

          ? HTML DOM在操作表格時(shí),我們把一個(gè)表格看成是一個(gè)table對(duì)象,那么一個(gè)table對(duì)象是由若干個(gè)行對(duì)象(row)組成的,而其中每個(gè)行對(duì)象又是由若干個(gè)單元格對(duì)象(cell)組成的

          ? Table對(duì)象可以操作行對(duì)象,行對(duì)象可以操作單元格對(duì)象

          4.1 table表格對(duì)象

          類別 名稱 描述

          屬性 rows[] 返回包含表格中所有行的一個(gè)數(shù)組

          方法 insertRow() 在表格中插入一個(gè)新行

          方法 deleteRow() 從表格中刪除一行


          4.2 row行對(duì)象

          類別 名稱 描述

          屬性 cells[] 返回包含行中所有單元格的一個(gè)數(shù)組

          屬性 rowIndex 返回該行在表中的位置

          方法 insertCell() 在一行中的指定位置插入一個(gè)空的<td>標(biāo)簽

          方法 deleteCell() 刪除行中指定的單元格


          另,對(duì)于單元格對(duì)象,還有cellIndex可以獲取單元格的索引號(hào)

          例如,這里需要在表格的末尾追加一行:

          ue.js設(shè)計(jì)與實(shí)現(xiàn),文字可復(fù)制,高清PDF資源,需要的可以私我 :)


          內(nèi)容介紹:

          本書基于Vue.js 3,從規(guī)范出發(fā),以源碼為基礎(chǔ),并結(jié)合大量直觀的配圖,循序漸進(jìn)地講解Vue.js中各個(gè)功能模塊的實(shí)現(xiàn),細(xì)致剖析框架設(shè)計(jì)原理。全書共18章,分為六篇,主要內(nèi)容包括:框架設(shè)計(jì)概覽、響應(yīng)系統(tǒng)、渲染器、組件化、編譯器和服務(wù)端渲染等。通過閱讀本書,對(duì)Vue.js 2/3具有上手經(jīng)驗(yàn)的開發(fā)人員能夠進(jìn)一步理解Vue.js框架的實(shí)現(xiàn)細(xì)節(jié),沒有Vue.js使用經(jīng)驗(yàn)但對(duì)框架設(shè)計(jì)感興趣的前端開發(fā)人員,能夠快速掌握Vue.js的設(shè)計(jì)原理。

          作者介紹:

          霍春陽(HcySunYang)
          Vue.js官方團(tuán)隊(duì)成員,專注于Web研發(fā)領(lǐng)域,是Vue.js 3的核心貢獻(xiàn)者之一,Vue.js文檔生成工具Vuese的作者,技術(shù)社區(qū)活躍者,曾撰寫大量頗受好評(píng)的技術(shù)博客。

          本書目錄:

          第 1章 權(quán)衡的藝術(shù) 2
          1.1 命令式和聲明式 2
          1.2 性能與可維護(hù)性的權(quán)衡 3
          1.3 虛擬DOM的性能到底如何 4
          1.4 運(yùn)行時(shí)和編譯時(shí) 8
          1.5 總結(jié) 11
          第 2章 框架設(shè)計(jì)的核心要素 12
          2.1 提升用戶的開發(fā)體驗(yàn) 12
          2.2 控制框架代碼的體積 14
          2.3 框架要做到良好的Tree-Shaking 15
          2.4 框架應(yīng)該輸出怎樣的構(gòu)建產(chǎn)物 17
          2.5 特性開關(guān) 19
          2.6 錯(cuò)誤處理 21
          2.7 良好的TypeScript類型支持 23
          2.8 總結(jié) 25
          第3章 Vue.js 3的設(shè)計(jì)思路 27
          3.1 聲明式地描述UI 27
          3.2 初識(shí)渲染器 29
          3.3 組件的本質(zhì) 32
          3.4 模板的工作原理 34
          3.5 Vue.js是各個(gè)模塊組成的有機(jī)整體 36
          3.6 總結(jié) 37
          第4章 響應(yīng)系統(tǒng)的作用與實(shí)現(xiàn) 40
          4.1 響應(yīng)式數(shù)據(jù)與副作用函數(shù) 40
          4.2 響應(yīng)式數(shù)據(jù)的基本實(shí)現(xiàn) 41
          4.3 設(shè)計(jì)一個(gè)完善的響應(yīng)系統(tǒng) 43
          4.4 分支切換與cleanup 50
          4.5 嵌套的effect與effect棧 55
          4.6 避免無限遞歸循環(huán) 59
          4.7 調(diào)度執(zhí)行 60
          4.8 計(jì)算屬性computed與lazy 64
          4.9 watch的實(shí)現(xiàn)原理 71
          4.10 立即執(zhí)行的watch與回調(diào)執(zhí)行時(shí)機(jī) 75
          4.11 過期的副作用 77
          4.12 總結(jié) 82
          第5章 非原始值的響應(yīng)式方案 84
          5.1 理解Proxy和Reflect 84
          5.2 JavaScript對(duì)象及Proxy的工作原理 88
          5.3 如何代理Object 92
          5.4 合理地觸發(fā)響應(yīng) 102
          5.5 淺響應(yīng)與深響應(yīng) 108
          5.6 只讀和淺只讀 110
          5.7 代理數(shù)組 113
          5.7.1 數(shù)組的索引與 length 114
          5.7.2 遍歷數(shù)組 119
          5.7.3 數(shù)組的查找方法 124
          5.7.4 隱式修改數(shù)組長(zhǎng)度的原型方法 129
          5.8 代理Set和Map 132
          5.8.1 如何代理Set和Map 133
          5.8.2 建立響應(yīng)聯(lián)系 137
          5.8.3 避免污染原始數(shù)據(jù) 140
          5.8.4 處理forEach 143
          5.8.5 迭代器方法 147
          5.8.6 values與keys方法 152
          5.9 總結(jié) 155
          第6章 原始值的響應(yīng)式方案 158
          6.1 引入ref的概念 158
          6.2 響應(yīng)丟失問題 160
          6.3 自動(dòng)脫ref 164
          6.4 總結(jié) 166
          第7章 渲染器的設(shè)計(jì) 170
          7.1 渲染器與響應(yīng)系統(tǒng)的結(jié)合 170
          7.2 渲染器的基本概念 172
          7.3 自定義渲染器 175
          7.4 總結(jié) 179
          第8章 掛載與更新 180
          8.1 掛載子節(jié)點(diǎn)和元素的屬性 180
          8.2 HTML Attributes與DOM Properties 182
          8.3 正確地設(shè)置元素屬性 184
          8.4 class的處理 189
          8.5 卸載操作 192
          8.6 區(qū)分vnode的類型 195
          8.7 事件的處理 196
          8.8 事件冒泡與更新時(shí)機(jī)問題 201
          8.9 更新子節(jié)點(diǎn) 204
          8.10 文本節(jié)點(diǎn)和注釋節(jié)點(diǎn) 209
          8.11 Fragment 212
          8.12 總結(jié) 215
          第9章 簡(jiǎn)單Diff算法 218
          9.1 減少DOM操作的性能開銷 218
          9.2 DOM復(fù)用與key的作用 221
          9.3 找到需要移動(dòng)的元素 225
          9.4 如何移動(dòng)元素 228
          9.5 添加新元素 233
          9.6 移除不存在的元素 238
          9.7 總結(jié) 241
          第 10章 雙端Diff算法 242
          10.1 雙端比較的原理 242
          10.2 雙端比較的優(yōu)勢(shì) 252
          10.3 非理想狀況的處理方式 255
          10.4 添加新元素 263
          10.5 移除不存在的元素 268
          10.6 總結(jié) 270
          第 11章 快速Diff算法 271
          11.1 相同的前置元素和后置元素 271
          11.2 判斷是否需要進(jìn)行DOM移動(dòng)操作 279
          11.3 如何移動(dòng)元素 288
          11.4 總結(jié) 296
          第 12章 組件的實(shí)現(xiàn)原理 298
          12.1 渲染組件 298
          12.2 組件狀態(tài)與自更新 301
          12.3 組件實(shí)例與組件的生命周期 304
          12.4 props與組件的被動(dòng)更新 306
          12.5 setup函數(shù)的作用與實(shí)現(xiàn) 311
          12.6 組件事件與emit的實(shí)現(xiàn) 314
          12.7 插槽的工作原理與實(shí)現(xiàn) 316
          12.8 注冊(cè)生命周期 318
          12.9 總結(jié) 320
          第 13章 異步組件與函數(shù)式組件 322
          13.1 異步組件要解決的問題 322
          13.2 異步組件的實(shí)現(xiàn)原理 324
          13.2.1 封裝defineAsyncComponent函數(shù) 324
          13.2.2 超時(shí)與Error組件 325
          13.2.3 延遲與Loading組件 328
          13.2.4 重試機(jī)制 331
          13.3 函數(shù)式組件 333
          13.4 總結(jié) 335
          第 14章 內(nèi)建組件和模塊 337
          14.1 KeepAlive組件的實(shí)現(xiàn)原理 337
          14.1.1 組件的激活與失活 337
          14.1.2 include和exclude 342
          14.1.3 緩存管理 343
          14.2 Teleport組件的實(shí)現(xiàn)原理 346
          14.2.1 Teleport組件要解決的問題 346
          14.2.2 實(shí)現(xiàn)Teleport組件 347
          14.3 Transition組件的實(shí)現(xiàn)原理 350
          14.3.1 原生DOM的過渡 351
          14.3.2 實(shí)現(xiàn)Transition組件 356
          14.4 總結(jié) 360
          第 15章 編譯器核心技術(shù)概覽 364
          15.1 模板DSL的編譯器 364
          15.2 parser的實(shí)現(xiàn)原理與狀態(tài)機(jī) 368
          15.3 構(gòu)造AST 374
          15.4 AST的轉(zhuǎn)換與插件化架構(gòu) 383
          15.4.1 節(jié)點(diǎn)的訪問 383
          15.4.2 轉(zhuǎn)換上下文與節(jié)點(diǎn)操作 387
          15.4.3 進(jìn)入與退出 392
          15.5 將模板AST轉(zhuǎn)為JavaScript AST 396
          15.6 代碼生成 402
          15.7 總結(jié) 407
          第 16章 解析器 409
          16.1 文本模式及其對(duì)解析器的影響 409
          16.2 遞歸下降算法構(gòu)造模板AST 413
          16.3 狀態(tài)機(jī)的開啟與停止 419
          16.4 解析標(biāo)簽節(jié)點(diǎn) 426
          16.5 解析屬性 430
          16.6 解析文本與解碼HTML實(shí)體 436
          16.6.1 解析文本 436
          16.6.2 解碼命名字符引用 438
          16.6.3 解碼數(shù)字字符引用 445
          16.7 解析插值與注釋 449
          16.8 總結(jié) 451
          第 17章 編譯優(yōu)化 453
          17.1 動(dòng)態(tài)節(jié)點(diǎn)收集與補(bǔ)丁標(biāo)志 453
          17.1.1 傳統(tǒng)Diff算法的問題 453
          17.1.2 Block與PatchFlags 454
          17.1.3 收集動(dòng)態(tài)節(jié)點(diǎn) 457
          17.1.4 渲染器的運(yùn)行時(shí)支持 459
          17.2 Block樹 461
          17.2.1 帶有v-if指令的節(jié)點(diǎn) 462
          17.2.2 帶有v-for指令的節(jié)點(diǎn) 464
          17.2.3 Fragment的穩(wěn)定性 465
          17.3 靜態(tài)提升 466
          17.4 預(yù)字符串化 468
          17.5 緩存內(nèi)聯(lián)事件處理函數(shù) 469
          17.6 v-once 470
          17.7 總結(jié) 471
          第 18章 同構(gòu)渲染 474
          18.1 CSR、SSR以及同構(gòu)渲染 474
          18.2 將虛擬DOM渲染為HTML字符串 478
          18.3 將組件渲染為HTML字符串 484
          18.4 客戶端激活的原理 489
          18.5 編寫同構(gòu)的代碼 494
          18.5.1 組件的生命周期 494
          18.5.2 使用跨平臺(tái)的API 496
          18.5.3 只在某一端引入模塊 496
          18.5.4 避免交叉請(qǐng)求引起的狀態(tài)污染 497
          18.5.5 組件 498
          18.6 總結(jié) 499


          Vue.js設(shè)計(jì)與實(shí)現(xiàn),文字可復(fù)制,高清PDF資源,需要的可以私我 :)


          主站蜘蛛池模板: 亚欧在线精品免费观看一区 | 欧美日韩国产免费一区二区三区| 亚洲综合无码一区二区痴汉| 精品久久一区二区| 尤物精品视频一区二区三区| 无码AV天堂一区二区三区| 一区二区三区在线视频播放| 日本精品无码一区二区三区久久久 | 韩日午夜在线资源一区二区| 日本夜爽爽一区二区三区| 亚洲a∨无码一区二区| 91久久精品午夜一区二区| 日韩制服国产精品一区| 精品国产一区二区三区AV性色| 国产成人精品无码一区二区老年人| 精品黑人一区二区三区| 亚洲一区中文字幕在线电影网| 日韩电影一区二区| 无码人妻一区二区三区免费n鬼沢| 国产天堂一区二区综合| 视频一区二区在线播放| 色一乱一伦一区一直爽| 人妻无码一区二区视频| 一区二区三区国模大胆| 精品无码人妻一区二区三区不卡| 一区在线免费观看| 日韩精品无码一区二区三区AV| 国产福利电影一区二区三区,日韩伦理电影在线福| 欧美亚洲精品一区二区| 爱爱帝国亚洲一区二区三区 | 动漫精品一区二区三区3d| 日本精品3d动漫一区二区| 精品一区二区91| 91福利国产在线观看一区二区 | 亚洲av乱码中文一区二区三区| 一区二区亚洲精品精华液| 狠狠做深爱婷婷久久综合一区| 人妻体内射精一区二区| 国产亚洲情侣一区二区无| 亚洲国产一区国产亚洲| 91视频一区二区三区|