2022前端面試整合

1.原型對(duì)象,原型鏈,數(shù)據(jù)類型,閉包

2.vue原理 探赫,react基本

3.瀏覽器渲染過程家坎,https嘱能,http緩存

4.數(shù)組的方法

5.webpack打包流程和loader,plugin的配置優(yōu)化

6.js作用域

7.瀏覽器時(shí)間循環(huán)

8.事件循環(huán)

9.keep-alive生命周期

?1.activated:頁面第一次進(jìn)入的時(shí)候虱疏,鉤子觸發(fā)的順序created-mounted-activated

?2.deactivated:頁面退出會(huì)觸發(fā)deactivated惹骂,當(dāng)再次前進(jìn)或后退時(shí)觸發(fā)activated

10.keep-alive屬性:正則/數(shù)組需要v-bind綁定

?1.include字符串或正則表達(dá)式,只有匹配的組件會(huì)被緩存

eg:

<keep-alive?include="test-keep-alive">

//將緩存name為test-keep-alive的組件

<component></component>

</keep-alive>

[if !supportLists]2.?[endif]exclude字符串或正則表達(dá)式做瞪,任何名稱或組件都不會(huì)被緩存

?eg:

<keep-alive?exclude="test-keep-alive">

<!-- 將不緩存name為test-keep-alive的組件 -->

<component></component>

</keep-alive>

[if !supportLists]3.?[endif]max數(shù)字对粪,最多可以緩存多少組件實(shí)例


11.Vue中計(jì)算屬性右冻、方法與偵聽屬性的區(qū)別

計(jì)量屬性computed在使用時(shí),函數(shù)里面所有的變量都會(huì)被監(jiān)聽著拭,只要里面某一個(gè)值變動(dòng)纱扭,便會(huì)將整個(gè)函數(shù)執(zhí)行一遍

?特性

1. 是計(jì)算值

2. 應(yīng)用:就是簡化tempalte里面{{}}計(jì)算和處理props或$emit的傳值

3. 具有緩存性,頁面重新渲染值不變化儡遮,計(jì)算屬性會(huì)立即返回之前的計(jì)算結(jié)果乳蛾,而不是再次執(zhí)行函數(shù)


而watch只是監(jiān)聽某一個(gè)值,若是監(jiān)聽的值里面也有很多變量鄙币,也會(huì)全部監(jiān)聽

?特性

1. 是觀察動(dòng)作

2. 應(yīng)用:監(jiān)聽props屡久,$emit或本組件的值執(zhí)行異步操作

3.無緩存性,頁面重新渲染時(shí)值不變化也會(huì)執(zhí)行




12.Vue生命周期:(四個(gè)階段爱榔,八個(gè)鉤子函數(shù))

1. 創(chuàng)建階段(create):beforeCreate(){創(chuàng)建前}被环,created(){創(chuàng)建后}

2. 掛載階段(Mount):beforeMount(){載入前},mounted(){載入后}

3. 更新階段(Update):beforeUpdate(){更新前}详幽,updated(){更新后}

4. 銷毀階段(destroy):beforeDestroy(){銷毀前}筛欢,destroyed(){銷毀后}


13.偵聽object數(shù)據(jù)----定義屬性:

Let contact = ‘陳涵’

Object.defineProperty(demo,’name’,{

Enumberable:true,

Configurable:true,

Get(){

Return contact

},

Set(){}

})

14.什么是BFC

BFC:塊級(jí)格式化上下文,它是指一個(gè)獨(dú)立的塊級(jí)渲染區(qū)域唇聘,只有Block-level Box參與版姑,該區(qū)域擁有一套渲染規(guī)則來約束塊級(jí)盒子的布局,且與區(qū)域外部無關(guān)迟郎。

現(xiàn)象:一個(gè)盒子不設(shè)置height剥险,內(nèi)容子元素都浮動(dòng)時(shí),無法撐起自身宪肖,這個(gè)盒子就沒有形成BFC

形成BFC的辦法:(父元素設(shè)置)

1.float不是none

2.position的值不是static或者relative

3.display的值是inline-block表制,flex,inline-flex

4.overflow:hidden(最好的辦法)

好處:

1.解決margin塌陷控乾,如圖


2.阻止元素被浮動(dòng)元素覆蓋么介,實(shí)用性為0,實(shí)際開發(fā)中浮動(dòng)就都浮動(dòng)蜕衡,不浮動(dòng)就都不浮動(dòng)壤短,否則會(huì)脫離文檔流。如圖:


15.深淺拷貝及symbol

數(shù)據(jù)存儲(chǔ)

1慨仿,一般數(shù)據(jù)類型:number? string? boolean? null? undefined? ?symbol (唯一性久脯,修飾的作用,不相等镰吆,遍歷用reflect.ownKeys(object)帘撰,symbol.for(), symbol.keyFor() )

symbol實(shí)際應(yīng)用:


2,? 引用數(shù)據(jù)類型:object? ? 數(shù)組? ?set? map?

第一個(gè)打印的是:基本數(shù)據(jù)類型鼎姊,第二個(gè)打印的是:symbol數(shù)據(jù)類型骡和,第三個(gè)都打印,如下圖

賦值和淺拷貝的區(qū)別:

1.賦值

淺拷貝需要?jiǎng)?chuàng)建一個(gè)新的對(duì)象相寇,而賦值不是

這是賦值

結(jié)果都是:科比

2.淺拷貝-一般數(shù)據(jù)類型

這是淺拷貝

沒有改變?cè)瓟?shù)據(jù):所以結(jié)果是:喬丹慰于,科比

3.淺拷貝-引用數(shù)據(jù)類型

因?yàn)閔obby是引用類的數(shù)據(jù)類型,拷貝的是內(nèi)存的地址 唤衫,也就指向同一個(gè)房間婆赠。拷貝前和拷貝后是相互影響的佳励,所以結(jié)果都是冰球

4.深拷貝(入過屬性是引用數(shù)據(jù)類型休里,那么就會(huì)開辟一個(gè)新房間)

應(yīng)用場(chǎng)景:組件

16.xss攻擊:比如一個(gè)神秘的URL沒有做轉(zhuǎn)義,加了一個(gè)script代碼赃承,然后渲染到頁面中被執(zhí)行

1.什么情況下會(huì)產(chǎn)生xss攻擊:

1妙黍,渲染到頁面中,以script標(biāo)簽注入瞧剖,不做轉(zhuǎn)義就會(huì)產(chǎn)生xss攻擊

2拭嫁,a鏈接跳轉(zhuǎn)的時(shí)候,即使做了轉(zhuǎn)義也會(huì)產(chǎn)生xss攻擊抓于,用白名單的方法解決

3做粤,URL以?“javascript:”?開頭也會(huì)產(chǎn)生xss攻擊,用白名單的方法解決捉撮,禁止調(diào) “javascript:” 鏈接怕品、非法scheme等

2.xss分類:

1,存儲(chǔ)型xss:(后端數(shù)據(jù)庫)用戶在提交數(shù)據(jù)時(shí)巾遭,后端沒有做過濾肉康,直接存儲(chǔ)到后端數(shù)據(jù)庫,最后前端從后端取用數(shù)據(jù)就會(huì)產(chǎn)生xss攻擊

2灼舍,反射性xss:(URL)

3迎罗,DOM型xss:(后端數(shù)據(jù)庫/前端存儲(chǔ)/URL)較前兩種,DOM型取出和執(zhí)行惡意代碼由瀏覽器端完成片仿,屬于前端JavaScript自身的安全漏洞纹安,而前兩種屬于服務(wù)器的安全漏洞。

17.crsf攻擊:


18.proxy:代理

1.proxy與Object.defineProperty對(duì)比:(vue3廢棄Object.defineProperty)

1.監(jiān)聽對(duì)象不需要遍歷砂豌,而Object.defineProperty需要遍歷

2.可以監(jiān)聽到新增加的屬性厢岂,而Object.defineProperty不可以

Object.defineProperty無法增加hobby屬性


proxy可以新增屬性

問題:Object.defineProperty無法監(jiān)聽數(shù)組的變化,除了proxy之外還有什么辦法可以監(jiān)聽?

答案:默認(rèn)將數(shù)組長度設(shè)置為1000阳距,監(jiān)聽0-999的屬性變化塔粒,如圖

2.監(jiān)聽push、shift筐摘、pop卒茬、unshift等方法:

18.閉包:能夠讀取其他函數(shù)內(nèi)部變量的函數(shù)

實(shí)際運(yùn)用:回調(diào)函數(shù)

1船老,作用域:(執(zhí)行上下文)

1,全局作用域??

2圃酵,函數(shù)作用域


bind實(shí)例

2柳畔,call-bind-apply的理解與區(qū)別:改變this的指向

3,call郭赐,apply區(qū)別:傳入的參數(shù)不一樣薪韩,call需要穿入逐個(gè)的,apply可以傳一個(gè)數(shù)組捌锭,如下圖:

可以改為Math.max.call(null,...[arr1])? ?-------? ?展開預(yù)算符的拆包

4俘陷,應(yīng)用

1.將 偽數(shù)組 轉(zhuǎn)化成 數(shù)組

偽數(shù)組和數(shù)組的區(qū)別:偽數(shù)組看著是數(shù)組,但是并沒有方法观谦,通過call改變它的指向

通過call改變它的指向拉盾,變成array的slice,轉(zhuǎn)成真正的數(shù)組豁状,但是slice? ie8以下識(shí)別不了報(bào)錯(cuò)盾剩,所以用for循環(huán),如下圖

答案:

前者是偽數(shù)組替蔬,后者是數(shù)組


arguments:

答案如下:

數(shù)組的拼接:

判斷數(shù)據(jù)類型:

封裝一個(gè)準(zhǔn)確判斷數(shù)據(jù)類型的函數(shù):

function getType(obj){

? let type? =typeof obj;

? if(type != "object"){

? ? return type;

? }

? returnObject.prototype.toString.call(obj).replace(/^\[object (\S+)\]$/, '$1');

}



區(qū)分obj和array:

1.typeof(最低級(jí)告私,最常用,只能判斷基本數(shù)據(jù)類型)

2.instanceof(一般用來判斷A是否是B的實(shí)例,表達(dá)式:A instanceof B? ? 是返回true承桥,不是返回false)

3.constructor

4.Object.prototype.toString.call()
























19.構(gòu)造函數(shù):用來初始化對(duì)象的(——construct)


20.原型(prototype)與原型鏈(_proto_? ;? =>[[prototype]])

原型:函數(shù)特有

原型鏈:任何數(shù)據(jù)都有原型鏈驻粟,如數(shù)組,對(duì)象凶异,number都是有的

從當(dāng)前實(shí)例屬性去查找蜀撑,如果找到了就返回,否則順著原型鏈一層一層往上找剩彬,直到找到null為止酷麦,如果找到null都沒找到,就會(huì)報(bào)錯(cuò)

輸入:age 喉恋, demo
原型鏈關(guān)系圖


21.數(shù)組的方法:

join():把數(shù)組轉(zhuǎn)換成字符串沃饶,eg:

push()和pop():添加到末尾 / 移除末尾,都是返回修改后的長度轻黑,eg:

shift() 和 unshift():移除開頭項(xiàng)糊肤,返回移除的項(xiàng) / 添加到開頭,返回長度氓鄙,eg:

sort():按字符串排序馆揉,按數(shù)值排序arr.sort(sortNumber),eg:

reverse():倒敘排序,eg:

concat():將參數(shù)添加到原數(shù)組抖拦,不改變?cè)瓟?shù)組升酣,eg:

slice():根據(jù)下標(biāo)截取數(shù)組舷暮,組成新的數(shù)組,eg:

splice():刪除,插入噩茄,替換下面,eg:

indexOf()和 lastIndexOf() (ES5新增):從前往后查找 / 從后往前查找,eg:

forEach() (ES5新增):循環(huán)遍歷巢墅,eg:

map() (ES5新增):返回新數(shù)組诸狭,不改變?cè)瓟?shù)組券膀,eg:

filter() (ES5新增):過濾君纫,eg:

every() (ES5新增):判斷數(shù)組中每一項(xiàng)是否滿足條件,全部滿足返回true芹彬,只要有一個(gè)不滿足即返回false蓄髓,eg:

some() (ES5新增):判斷數(shù)組中是否有一項(xiàng)滿足條件,有一項(xiàng)滿足返回true舒帮,全部不滿足即返回false会喝,eg:

2.類數(shù)組轉(zhuǎn)化為數(shù)組:

args = Array.prototype.slice.call(arguments)


22.支付安全問題:非對(duì)稱,rsa 玩郊,一般數(shù)字簽名肢执,然后sha或md5進(jìn)行加密


23.箭頭函數(shù):沒有{},不需要return


結(jié)果:3
結(jié)果是一個(gè)對(duì)象:{a:2}

1译红,函數(shù)體內(nèi)的this:

面試題:

2预茄,不可以當(dāng)做構(gòu)造函數(shù)

3,arguments 是不可以的

4侦厚,不可以當(dāng)做 generator(迭代器)函數(shù)


24.ES6快速去重:

let arr = [11,23,45,55,11,23]

let item = [...new Set(arr)]

console.log(item)

25.Promise:

1.構(gòu)造函數(shù)同步執(zhí)行 -> .then()方法異步執(zhí)行



26.閉包:

優(yōu):1.使用閉包可以通過外部函數(shù)訪問內(nèi)部的函數(shù)值耻陕,提升作用域;2.便于鏈?zhǔn)秸{(diào)用可重復(fù)使用刨沦,不會(huì)造成全局污染诗宣;3.私有性,封裝性強(qiáng)想诅,有效防止了命名沖突

缺:1會(huì)常駐內(nèi)存召庞,不會(huì)被回收,IE中容易造成內(nèi)存泄漏来破,慎用裁眯;

1.閉包是什么?? -----? 方法里返回一個(gè)方法

2.閉包的意義是什么讳癌?-----? ?1.延長變量的生命周期? 2.創(chuàng)建私有環(huán)境----------項(xiàng)目運(yùn)行會(huì)生成一個(gè)臨時(shí)的變量對(duì)象AO(active object)穿稳,會(huì)存儲(chǔ)所有的方法以及局部變量,全局變量不會(huì)在AO里面

3.作用域鏈:-----?層層查找晌坤,就近原則

打印出:小紅

4.vue 中 data() 為什么是一個(gè)函數(shù)???------? ?保證了每一個(gè)組件都有一個(gè)私有的作用域

就是一個(gè)閉包

27.防抖與節(jié)流

1.防抖:=》逢艘,在固定的時(shí)間內(nèi)旦袋,時(shí)間只允許發(fā)生一次;

應(yīng)用場(chǎng)景:1.input框輸入自動(dòng)補(bǔ)全事件它改;2.頻繁的操作點(diǎn)贊或取消點(diǎn)贊之類疤孕;3.瀏覽器窗口大小改變后,只需窗口調(diào)整完成后,再執(zhí)行resize事件中的代碼,防止重復(fù)渲染央拖;

實(shí)現(xiàn)原理:如果在500ms內(nèi)頻繁操作祭阀,則每次都會(huì)清除一次定時(shí)器然后重新創(chuàng)建一個(gè)。直到最后一次操作鲜戒,然后等待500ms后發(fā)送ajax

2s之后才會(huì)發(fā)送請(qǐng)求

2.節(jié)流:=》保證一定時(shí)間內(nèi)只調(diào)用一次函數(shù)

應(yīng)用場(chǎng)景:1.提交表單专控;2.高頻的監(jiān)聽事件;

2.還有一種方法就是用時(shí)間戳節(jié)流

28.Vue2響應(yīng)式:

短路表達(dá)式:

29.MVC與MVVM

1.雙向數(shù)據(jù)綁定:

2.v-if和v-show的區(qū)別:

v-if:不滿足條件,不會(huì)渲染dom? =》 單次判斷

v-show:隱藏dom? ?=》 多次切換? ?-------? ?不能用于權(quán)限操作


30.數(shù)據(jù)類型:

原始數(shù)據(jù)類型:String,number泄伪,boolean,undefined柏蘑,null

引用數(shù)據(jù)類型:數(shù)組,對(duì)象粹庞,函數(shù)

存儲(chǔ):

31.棧和堆:

棧:先進(jìn)后出咳焚,自動(dòng)分配釋放

堆:隊(duì)列優(yōu)先,先進(jìn)先出庞溜,動(dòng)態(tài)分配空間革半,一般由程序員分配釋放,若程序員不釋放强缘,程序結(jié)束時(shí)可能右OS回收督惰,容易產(chǎn)生內(nèi)存泄漏

32.js內(nèi)置對(duì)象:

1.值屬性,這些全局屬性返回一個(gè)簡單值旅掂,這些值沒有自己的屬性和方法赏胚。如:NaN,null商虐,undefined觉阅,Infinity

2.函數(shù)屬性,全局函數(shù)可以直接調(diào)用秘车,不需要再調(diào)用時(shí)指定所屬對(duì)象典勇,結(jié)束后會(huì)將結(jié)果直接返回給調(diào)用者。如:eval()叮趴,isNaN()

3.基本對(duì)象割笙,包括一般對(duì)象,函數(shù)對(duì)象和錯(cuò)誤對(duì)象。如:Object伤溉,F(xiàn)unction般码,Boolean,Symbol乱顾,Error

4.數(shù)字和日期對(duì)象板祝。如:Number,Math走净,Date

5.字符串券时。如:String,RegExp

6.可索引的集合對(duì)象伏伯。如:Array

7.使用鍵的集合橘洞。如:Map,Set舵鳞,WeakMap震檩,WeakSet

8.矢量集合琢蛤。如:SIMD

9.結(jié)構(gòu)化數(shù)據(jù)蜓堕。如:Json

10.控制抽象對(duì)象。如:Promise博其,Generator

11.反射套才。如:Proxy,Reflect

12.國際化慕淡,為了支持多語言處理而加入 ECMAScript 的對(duì)象背伴。如:Intl、Intl.Collator

13.WebAssembly

14.其他峰髓。如:arguments

33.diff算法中patch方法:




34.uni-app:

模擬器:夜神模擬器傻寂,在電腦模擬真機(jī)測(cè)試

uni的生命周期:onLaunch(只觸發(fā)一次),onshow(啟動(dòng))携兵,onHide(前臺(tái)進(jìn)入后臺(tái))疾掰,onError(報(bào)錯(cuò))

頁面的生命周期:? onLoad(加載),onShow(顯示)徐紧,onReady(初次渲染)静檬,onHide(隱藏),onUnload(監(jiān)聽頁面卸載) 并级,onResize(窗口尺寸)拂檩,onPullDownRefresh(下拉刷新),onReachBottm(頁面滾動(dòng))嘲碧,onTablemTap(點(diǎn)擊tab時(shí)觸發(fā))稻励,onShareAPPMessage(分享)

組件的生命周期:beforeCreat(創(chuàng)建前),created(創(chuàng)建后)愈涩,beforeMount(掛載前)望抽,Mounted(掛載后)至非,beforeUpdate(更新前),undated(更新后)糠聪,beforeDestroy(銷毀前)荒椭,destroyed(銷毀后)

條件注釋:#ifdef H5/WP-WEIXIN? 開始? ? ?#endif結(jié)束

組件之間傳值:

1.父傳子:props

2.子傳父:$emit

3.兄弟傳值:

獲取后臺(tái)數(shù)據(jù):

格式化年月日:

全局










35.


36.

37.

38.

39.








40.vue2---->vue3的變化

新特性:

1.以前data? 現(xiàn)在setup 然后return出去

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
禁止轉(zhuǎn)載,如需轉(zhuǎn)載請(qǐng)通過簡信或評(píng)論聯(lián)系作者舰蟆。
  • 序言:七十年代末趣惠,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子身害,更是在濱河造成了極大的恐慌味悄,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,599評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件塌鸯,死亡現(xiàn)場(chǎng)離奇詭異侍瑟,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)丙猬,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,629評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門涨颜,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人茧球,你說我怎么就攤上這事庭瑰。” “怎么了抢埋?”我有些...
    開封第一講書人閱讀 158,084評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵弹灭,是天一觀的道長。 經(jīng)常有香客問我揪垄,道長穷吮,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,708評(píng)論 1 284
  • 正文 為了忘掉前任饥努,我火速辦了婚禮捡鱼,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘肪凛。我一直安慰自己堰汉,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,813評(píng)論 6 386
  • 文/花漫 我一把揭開白布伟墙。 她就那樣靜靜地躺著翘鸭,像睡著了一般。 火紅的嫁衣襯著肌膚如雪戳葵。 梳的紋絲不亂的頭發(fā)上就乓,一...
    開封第一講書人閱讀 50,021評(píng)論 1 291
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼生蚁。 笑死噩翠,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的邦投。 我是一名探鬼主播伤锚,決...
    沈念sama閱讀 39,120評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼志衣!你這毒婦竟也來了屯援?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,866評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤念脯,失蹤者是張志新(化名)和其女友劉穎狞洋,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體绿店,經(jīng)...
    沈念sama閱讀 44,308評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡吉懊,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,633評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了假勿。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片借嗽。...
    茶點(diǎn)故事閱讀 38,768評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖废登,靈堂內(nèi)的尸體忽然破棺而出淹魄,到底是詐尸還是另有隱情郁惜,我是刑警寧澤堡距,帶...
    沈念sama閱讀 34,461評(píng)論 4 333
  • 正文 年R本政府宣布,位于F島的核電站兆蕉,受9級(jí)特大地震影響羽戒,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜虎韵,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,094評(píng)論 3 317
  • 文/蒙蒙 一易稠、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧包蓝,春花似錦驶社、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,850評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至硅瞧,卻和暖如春份乒,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,082評(píng)論 1 267
  • 我被黑心中介騙來泰國打工或辖, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留瘾英,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,571評(píng)論 2 362
  • 正文 我出身青樓颂暇,卻偏偏與公主長得像缺谴,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子耳鸯,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,666評(píng)論 2 350

推薦閱讀更多精彩內(nèi)容