国产秋霞理论久久久电影-婷婷色九月综合激情丁香-欧美在线观看乱妇视频-精品国avA久久久久久久-国产乱码精品一区二区三区亚洲人-欧美熟妇一区二区三区蜜桃视频

就因?yàn)镴SON.stringify,我的年終獎(jiǎng)差點(diǎn)打水漂了

共 13151字,需瀏覽 27分鐘

 ·

2021-10-14 23:56

?

?????關(guān)注《前端陽光》,加入技術(shù)交流群?
?


前言

?

開發(fā)要對(duì)線上環(huán)境有一顆敬畏之心,任何一個(gè)點(diǎn)都有可能導(dǎo)致線上故障,也有可能讓你的年終獎(jiǎng)泡湯(⊙︿⊙)。比如使用了JSON.stringify,這個(gè)無比熟悉但又無比陌生的API。

?

看完本文您可以收獲:

  1. 了解一個(gè)差點(diǎn)讓我年終獎(jiǎng)打水漂的悲傷的故事o(╥﹏╥)o
  2. 學(xué)習(xí)JSON.stringify的9大特性和轉(zhuǎn)換規(guī)則 「(重點(diǎn))」
  3. 了解如何判斷一個(gè)對(duì)象是否存在循環(huán)引用 「(重點(diǎn))」
  4. 從零開始手寫一個(gè)JSON.stringify 「(重點(diǎn))」
  5. 等等

說一個(gè)悲傷的故事

?

最近組內(nèi)有個(gè)小伙伴離職了,他所負(fù)責(zé)的一塊業(yè)務(wù)由我去維護(hù),結(jié)果剛接手,代碼還沒捂熱乎,差點(diǎn)背上p0的鍋。請(qǐng)讓我花一點(diǎn)時(shí)間和你說清楚來龍去脈。

?

悲傷伊始

?

這一天「胖頭魚」正徜徉在代碼的海洋不可自拔,突然被拉進(jìn)了一個(gè)線上問題排查群,群里不可謂不熱鬧。

?

「產(chǎn)品同學(xué)」在訴苦:線上用戶不能提交表單了,帶來了好多客訴,估計(jì)會(huì)是p0故障,希望盡快解決。

「測(cè)試同學(xué)」在納悶:這個(gè)場(chǎng)景測(cè)試和預(yù)發(fā)環(huán)境明明驗(yàn)過的,怎么線上就不行了。

「后端同學(xué)」在講原因:接口缺少了value字段,導(dǎo)致出錯(cuò)了。

就是木有人說問題怎么解決!!!

就是木有人說問題怎么解決!!!

就是木有人說問題怎么解決!!!

這樣的場(chǎng)景不知道你是不是也似曾相識(shí)呢?o(╥﹏╥)o,不管咋說第一要?jiǎng)?wù)還是先把線上問題解決掉,減少持續(xù)影響,趕緊把交接的代碼翻出來,開始了排查過程。

問題原因

?

如下圖:有這樣一個(gè)動(dòng)態(tài)表單搜集頁面,用戶選擇或者填寫了信息之后(各字段非必填情況下也可以直接提交),接著前端把數(shù)據(jù)發(fā)送給后端,結(jié)束,看起來沒有多復(fù)雜的邏輯。

?
image.png

「直接錯(cuò)誤原因」

?

非必填情況下,signInfo字段中經(jīng)過JSON.stringify后的字符串對(duì)象缺少value key,導(dǎo)致后端parse之后無法正確讀取value值,進(jìn)而報(bào)接口系統(tǒng)異常,用戶無法進(jìn)行下一步動(dòng)作。

?
//?異常入?yún)?shù)據(jù),數(shù)組字符串中沒有value?key
{
??signInfo:?'[{"fieldId":539},{"fieldId":540},{"fieldId":546,"value":"10:30"}]'
}

//?正常入?yún)?shù)據(jù)
{
??signInfo:?'[{"fieldId":539,"value":"銀卡"},{"fieldId":540,"value":"2021-03-01"},{"fieldId":546,"value":"10:30"}]'
}

「異常數(shù)據(jù)是如何產(chǎn)生的」

//?默認(rèn)情況下數(shù)據(jù)是這樣的
let?signInfo?=?[
??{
????fieldId:?539,
????value:?undefined
??},
??{
????fieldId:?540,
????value:?undefined
??},
??{
????fieldId:?546,
????value:?undefined
??},
]
//?經(jīng)過JSON.stringify之后的數(shù)據(jù),少了value?key,導(dǎo)致后端無法讀取value值進(jìn)行報(bào)錯(cuò)
//?具體原因是`undefined`、`任意的函數(shù)`以及`symbol值`,出現(xiàn)在`非數(shù)組對(duì)象`的屬性值中時(shí)在序列化過程中會(huì)被忽略
console.log(JSON.stringify(signInfo))
//?'[{"fieldId":539},{"fieldId":540},{"fieldId":546}]'

解決方案

?

問題的原因找到了,解決方式 「(這里只講前端的解決方案,當(dāng)然也可以由后端解決)」 也很簡(jiǎn)單,將value值為undefined的項(xiàng)轉(zhuǎn)化為空字符串再提交即可。

?

「方案一:新開一個(gè)對(duì)象處理」

let?signInfo?=?[
??{
????fieldId:?539,
????value:?undefined
??},
??{
????fieldId:?540,
????value:?undefined
??},
??{
????fieldId:?546,
????value:?undefined
??},
]

let?newSignInfo?=?signInfo.map((it)?=>?{
??const?value?=?typeof?it.value?===?'undefined'???''?:?it.value
??return?{
????...it,
????value
??}
})

console.log(JSON.stringify(newSignInfo))
//?'[{"fieldId":539,"value":""},{"fieldId":540,"value":""},{"fieldId":546,"value":""}]'

方案二:利用JSON.stringify第二個(gè)參數(shù),直接處理

?

方案一的缺陷是需要新開一個(gè)對(duì)象進(jìn)行一頓操作才能解決,不夠優(yōu)雅

?
let?signInfo?=?[
??{
????fieldId:?539,
????value:?undefined
??},
??{
????fieldId:?540,
????value:?undefined
??},
??{
????fieldId:?546,
????value:?undefined
??},
]

//?判斷到value為undefined,返回空字符串即可
JSON.stringify(signInfo,?(key,?value)?=>?typeof?value?===?'undefined'???''?:?value)
//?'[{"fieldId":539,"value":""},{"fieldId":540,"value":""},{"fieldId":546,"value":""}]'

故事后續(xù)

?

原本這是一個(gè)已經(jīng)上線有一段時(shí)間的頁面,為何會(huì)突然出現(xiàn)這個(gè)問題,之前卻沒有呢?仔細(xì)詢問下,原來是中途產(chǎn)品同學(xué)提了一個(gè)小的優(yōu)化點(diǎn),離職的小伙伴感覺點(diǎn)比較小直接就改了代碼上線了,未曾想出現(xiàn)了線上問題。

?

后面針對(duì)這件事從產(chǎn)品到測(cè)試、到后端、到前端單獨(dú)做了一個(gè)完整的復(fù)盤,細(xì)節(jié)就不再展開說了。

因?yàn)閺陌l(fā)現(xiàn)問題到解決問題速度較快、影響用戶數(shù)較少,還未達(dá)到問責(zé)程度,「俺的年終獎(jiǎng)可算是保住了o(╥﹏╥)o。」

重學(xué)JSON.stringify

?

經(jīng)過這件事情,我覺得有必要重新審視一下JSON.stringify這個(gè)方法,徹底搞清楚轉(zhuǎn)換規(guī)則,并嘗試手寫實(shí)現(xiàn)一個(gè)JSON.stringify

?

如果你曾遇到和我一樣的問題,歡迎一起來重新學(xué)習(xí)一次,一定會(huì)有不一樣的收獲噢!

學(xué)透JSON.stringify

?

JSON.stringify()?方法將一個(gè) JavaScript?對(duì)象轉(zhuǎn)換為 JSON 字符串,如果指定了一個(gè) replacer 函數(shù),則可以選擇性地替換值,或者指定的 replacer 是數(shù)組,則可選擇性地僅包含數(shù)組指定的屬性。

?

以下信息來自MDN

語法

JSON.stringify(value[,?replacer?[,?space]])

參數(shù)[1]

  • value

    將要序列化成 一個(gè) JSON 字符串的值。

  • replacer?可選

    1. 如果該參數(shù)是一個(gè)函數(shù),則在序列化過程中,被序列化的值的每個(gè)屬性都會(huì)經(jīng)過該函數(shù)的轉(zhuǎn)換和處理;
    2. 如果該參數(shù)是一個(gè)數(shù)組,則只有包含在這個(gè)數(shù)組中的屬性名才會(huì)被序列化到最終的 JSON 字符串中;
    3. 如果該參數(shù)為 null 或者未提供,則對(duì)象所有的屬性都會(huì)被序列化。
  • space?可選

    1. 指定縮進(jìn)用的空白字符串,用于美化輸出(pretty-print);
    2. 如果參數(shù)是個(gè)數(shù)字,它代表有多少的空格;上限為10。
    3. 該值若小于1,則意味著沒有空格;
    4. 如果該參數(shù)為字符串(當(dāng)字符串長(zhǎng)度超過10個(gè)字母,取其前10個(gè)字母),該字符串將被作為空格;
    5. 如果該參數(shù)沒有提供(或者為 null),將沒有空格。

「返回值」

一個(gè)表示給定值的JSON字符串。

異常[2]

  • 當(dāng)在循環(huán)引用時(shí)會(huì)拋出異常TypeError?("cyclic object value")(循環(huán)對(duì)象值)
  • 當(dāng)嘗試去轉(zhuǎn)換?BigInt?類型的值會(huì)拋出TypeError?("BigInt value can't be serialized in JSON")(BigInt值不能JSON序列化).

基本使用

「注意」

  1. JSON.stringify可以轉(zhuǎn)換對(duì)象或者值(平常用的更多的是轉(zhuǎn)換對(duì)象)
  2. 可以指定replacer為函數(shù)選擇性的地替換
  3. 也可以指定replacer為數(shù)組,可轉(zhuǎn)換指定的屬性

這里僅僅是NDN上關(guān)于JSON.stringify其中最基礎(chǔ)的說明,咱們先打個(gè)碼試試這幾個(gè)特性

//?1.?轉(zhuǎn)換對(duì)象
console.log(JSON.stringify({?name:?'前端胖頭魚',?sex:?'boy'?}))?//?'{"name":"前端胖頭魚","sex":"boy"}'

//?2.?轉(zhuǎn)換普通值
console.log(JSON.stringify('前端胖頭魚'))?//?"前端胖頭魚"
console.log(JSON.stringify(1))?//?"1"
console.log(JSON.stringify(true))?//?"true"
console.log(JSON.stringify(null))?//?"null"

//?3.?指定replacer函數(shù)
console.log(JSON.stringify({?name:?'前端胖頭魚',?sex:?'boy',?age:?100?},?(key,?value)?=>?{
??return?typeof?value?===?'number'???undefined?:?value
}))
//?'{"name":"前端胖頭魚","sex":"boy"}'

//?4.?指定數(shù)組
console.log(JSON.stringify({?name:?'前端胖頭魚',?sex:?'boy',?age:?100?},?[?'name'?]))
//?'{"name":"前端胖頭魚"}'

//?5.?指定space(美化輸出)
console.log(JSON.stringify({?name:?'前端胖頭魚',?sex:?'boy',?age:?100?}))
//?'{"name":"前端胖頭魚","sex":"boy","age":100}'
console.log(JSON.stringify({?name:?'前端胖頭魚',?sex:?'boy',?age:?100?},?null?,?2))
/*
{
??"name":?"前端胖頭魚",
??"sex":?"boy",
??"age":?100
}
*/

9大特性要記住

?

以前僅僅是使用了這個(gè)方法,卻沒有詳細(xì)了解他的轉(zhuǎn)換規(guī)則,居然有9個(gè)之多。

?

特性一

  1. undefined、任意的函數(shù)以及symbol值,出現(xiàn)在非數(shù)組對(duì)象的屬性值中時(shí)在序列化過程中會(huì)被忽略
  2. undefined、任意的函數(shù)以及symbol值出現(xiàn)在數(shù)組中時(shí)會(huì)被轉(zhuǎn)換成?null。
  3. undefined、任意的函數(shù)以及symbol值單獨(dú)轉(zhuǎn)換時(shí),會(huì)返回 undefined
//?1.?對(duì)象中存在這三種值會(huì)被忽略
console.log(JSON.stringify({
??name:?'前端胖頭魚',
??sex:?'boy',
??//?函數(shù)會(huì)被忽略
??showName?()?{
????console.log('前端胖頭魚')
??},
??//?undefined會(huì)被忽略
??age:?undefined,
??//?Symbol會(huì)被忽略
??symbolName:?Symbol('前端胖頭魚')
}))
//?'{"name":"前端胖頭魚","sex":"boy"}'

//?2.?數(shù)組中存在著三種值會(huì)被轉(zhuǎn)化為null
console.log(JSON.stringify([
??'前端胖頭魚',
??'boy',
??//?函數(shù)會(huì)被轉(zhuǎn)化為null
??function?showName?()?{
????console.log('前端胖頭魚')
??},
??//undefined會(huì)被轉(zhuǎn)化為null
??undefined,
??//Symbol會(huì)被轉(zhuǎn)化為null
??Symbol('前端胖頭魚')
]))
//?'["前端胖頭魚","boy",null,null,null]'

//?3.單獨(dú)轉(zhuǎn)換會(huì)返回undefined
console.log(JSON.stringify(
??function?showName?()?{
????console.log('前端胖頭魚')
??}
))?//?undefined
console.log(JSON.stringify(undefined))?//?undefined
console.log(JSON.stringify(Symbol('前端胖頭魚')))?//?undefined

特性二

?

布爾值、數(shù)字字符串的包裝對(duì)象在序列化過程中會(huì)自動(dòng)轉(zhuǎn)換成對(duì)應(yīng)的原始值。

?
console.log(JSON.stringify([new?Number(1),?new?String("前端胖頭魚"),?new?Boolean(false)]))
//?'[1,"前端胖頭魚",false]'

特性三

?

所有以symbol為屬性鍵的屬性都會(huì)被完全忽略掉,即便?replacer?參數(shù)中強(qiáng)制指定包含了它們。

?
console.log(JSON.stringify({
??name:?Symbol('前端胖頭魚'),
}))
//?'{}'
console.log(JSON.stringify({
??[?Symbol('前端胖頭魚')?]:?'前端胖頭魚',
},?(key,?value)?=>?{
??if?(typeof?key?===?'symbol')?{
????return?value
??}
}))
//?undefined

特性四

?

NaN 和 Infinity 格式的數(shù)值及 null 都會(huì)被當(dāng)做 null。

?
console.log(JSON.stringify({
??age:?NaN,
??age2:?Infinity,
??name:?null
}))
//?'{"age":null,"age2":null,"name":null}'

特性五

?

轉(zhuǎn)換值如果有 toJSON() 方法,該方法定義什么值將被序列化。

?
const?toJSONObj?=?{
??name:?'前端胖頭魚',
??toJSON?()?{
????return?'JSON.stringify'
??}
}

console.log(JSON.stringify(toJSONObj))
//?"JSON.stringify"

特性六

?

Date 日期調(diào)用了 toJSON() 將其轉(zhuǎn)換為了 string 字符串(同Date.toISOString()),因此會(huì)被當(dāng)做字符串處理。

?
const?d?=?new?Date()

console.log(d.toJSON())?//?2021-10-05T14:01:23.932Z
console.log(JSON.stringify(d))?//?"2021-10-05T14:01:23.932Z"

特性七

?

對(duì)包含循環(huán)引用的對(duì)象(對(duì)象之間相互引用,形成無限循環(huán))執(zhí)行此方法,會(huì)拋出錯(cuò)誤。

?
let?cyclicObj?=?{
??name:?'前端胖頭魚',
}

cyclicObj.obj?=?cyclicObj

console.log(JSON.stringify(cyclicObj))
//?Converting?circular?structure?to?JSON

特性八

?

其他類型的對(duì)象,包括 Map/Set/WeakMap/WeakSet,僅會(huì)序列化可枚舉的屬性

?
let?enumerableObj?=?{}

Object.defineProperties(enumerableObj,?{
??name:?{
????value:?'前端胖頭魚',
????enumerable:?true
??},
??sex:?{
????value:?'boy',
????enumerable:?false
??},
})

console.log(JSON.stringify(enumerableObj))
//?'{"name":"前端胖頭魚"}'

特性九

?

當(dāng)嘗試去轉(zhuǎn)換?BigInt?類型的值會(huì)拋出錯(cuò)誤

?
const?alsoHuge?=?BigInt(9007199254740991)

console.log(JSON.stringify(alsoHuge))
//?TypeError:?Do?not?know?how?to?serialize?a?BigInt

手寫一個(gè)JSON.stringify

?

終于重新學(xué)完JSON.stringify的眾多特性啦!咱們根據(jù)這些特性來手寫一個(gè)簡(jiǎn)單版本的吧(「無replacer函數(shù)和space」

?

源碼實(shí)現(xiàn)

const?jsonstringify?=?(data)?=>?{
??//?確認(rèn)一個(gè)對(duì)象是否存在循環(huán)引用
??const?isCyclic?=?(obj)?=>?{
??//?使用Set數(shù)據(jù)類型來存儲(chǔ)已經(jīng)檢測(cè)過的對(duì)象
??let?stackSet?=?new?Set()
??let?detected?=?false

??const?detect?=?(obj)?=>?{
????//?不是對(duì)象類型的話,可以直接跳過
????if?(obj?&&?typeof?obj?!=?'object')?{
??????return
????}
????//?當(dāng)要檢查的對(duì)象已經(jīng)存在于stackSet中時(shí),表示存在循環(huán)引用
????if?(stackSet.has(obj))?{
??????return?detected?=?true
????}
????//?將當(dāng)前obj存如stackSet
????stackSet.add(obj)

????for?(let?key?in?obj)?{
??????//?對(duì)obj下的屬性進(jìn)行挨個(gè)檢測(cè)
??????if?(obj.hasOwnProperty(key))?{
????????detect(obj[key])
??????}
????}
????//?平級(jí)檢測(cè)完成之后,將當(dāng)前對(duì)象刪除,防止誤判
????/*
??????例如:對(duì)象的屬性指向同一引用,如果不刪除的話,會(huì)被認(rèn)為是循環(huán)引用
??????let?tempObj?=?{
????????name:?'前端胖頭魚'
??????}
??????let?obj4?=?{
????????obj1:?tempObj,
????????obj2:?tempObj
??????}
????*/

????stackSet.delete(obj)
??}

??detect(obj)

??return?detected
}

??//?特性七:
??//?對(duì)包含循環(huán)引用的對(duì)象(對(duì)象之間相互引用,形成無限循環(huán))執(zhí)行此方法,會(huì)拋出錯(cuò)誤。
??if?(isCyclic(data))?{
????throw?new?TypeError('Converting?circular?structure?to?JSON')
??}

??//?特性九:
??//?當(dāng)嘗試去轉(zhuǎn)換?BigInt?類型的值會(huì)拋出錯(cuò)誤
??if?(typeof?data?===?'bigint')?{
????throw?new?TypeError('Do?not?know?how?to?serialize?a?BigInt')
??}

??const?type?=?typeof?data
??const?commonKeys1?=?['undefined',?'function',?'symbol']
??const?getType?=?(s)?=>?{
????return?Object.prototype.toString.call(s).replace(/\[object?(.*?)\]/,?'$1').toLowerCase()
??}

??//?非對(duì)象
??if?(type?!==?'object'?||?data?===?null)?{
????let?result?=?data
????//?特性四:
????// NaN 和 Infinity 格式的數(shù)值及 null 都會(huì)被當(dāng)做 null。
????if?([NaN,?Infinity,?null].includes(data))?{
??????result?=?'null'
??????//?特性一:
??????//?`undefined`、`任意的函數(shù)`以及`symbol值`被`單獨(dú)轉(zhuǎn)換`時(shí),會(huì)返回?undefined
????}?else?if?(commonKeys1.includes(type))?{
??????//?直接得到undefined,并不是一個(gè)字符串'undefined'
??????return?undefined
????}?else?if?(type?===?'string')?{
??????result?=?'"'?+?data?+?'"'
????}

????return?String(result)
??}?else?if?(type?===?'object')?{
????//?特性五:
????//?轉(zhuǎn)換值如果有?toJSON()?方法,該方法定義什么值將被序列化
????//?特性六:
????// Date 日期調(diào)用了 toJSON()?將其轉(zhuǎn)換為了 string 字符串(同Date.toISOString()),因此會(huì)被當(dāng)做字符串處理。
????if?(typeof?data.toJSON?===?'function')?{
??????return?jsonstringify(data.toJSON())
????}?else?if?(Array.isArray(data))?{
??????let?result?=?data.map((it)?=>?{
????????//?特性一:
????????//?`undefined`、`任意的函數(shù)`以及`symbol值`出現(xiàn)在`數(shù)組`中時(shí)會(huì)被轉(zhuǎn)換成?`null`
????????return?commonKeys1.includes(typeof?it)???'null'?:?jsonstringify(it)
??????})

??????return?`[${result}]`.replace(/'/g,?'"')
????}?else?{
??????//?特性二:
??????//?布爾值、數(shù)字、字符串的包裝對(duì)象在序列化過程中會(huì)自動(dòng)轉(zhuǎn)換成對(duì)應(yīng)的原始值。
??????if?(['boolean',?'number'].includes(getType(data)))?{
????????return?String(data)
??????}?else?if?(getType(data)?===?'string')?{
????????return?'"'?+?data?+?'"'
??????}?else?{
????????let?result?=?[]
????????//?特性八
????????//?其他類型的對(duì)象,包括?Map/Set/WeakMap/WeakSet,僅會(huì)序列化可枚舉的屬性
????????Object.keys(data).forEach((key)?=>?{
??????????//?特性三:
??????????//?所有以symbol為屬性鍵的屬性都會(huì)被完全忽略掉,即便 replacer 參數(shù)中強(qiáng)制指定包含了它們。
??????????if?(typeof?key?!==?'symbol')?{
????????????const?value?=?data[key]
????????????//?特性一
????????????//?`undefined`、`任意的函數(shù)`以及`symbol值`,出現(xiàn)在`非數(shù)組對(duì)象`的屬性值中時(shí)在序列化過程中會(huì)被忽略
????????????if?(!commonKeys1.includes(typeof?value))?{
??????????????result.push(`"${key}":${jsonstringify(value)}`)
????????????}
??????????}
????????})

????????return?`{${result}}`.replace(/'/,?'"')
??????}
????}
??}
}


測(cè)試一把

//?1.?測(cè)試一下基本輸出
console.log(jsonstringify(undefined))?//?undefined?
console.log(jsonstringify(()?=>?{?}))?//?undefined
console.log(jsonstringify(Symbol('前端胖頭魚')))?//?undefined
console.log(jsonstringify((NaN)))?//?null
console.log(jsonstringify((Infinity)))?//?null
console.log(jsonstringify((null)))?//?null
console.log(jsonstringify({
??name:?'前端胖頭魚',
??toJSON()?{
????return?{
??????name:?'前端胖頭魚2',
??????sex:?'boy'
????}
??}
}))
//?{"name":"前端胖頭魚2","sex":"boy"}

//?2.?和原生的JSON.stringify轉(zhuǎn)換進(jìn)行比較
console.log(jsonstringify(null)?===?JSON.stringify(null));
//?true
console.log(jsonstringify(undefined)?===?JSON.stringify(undefined));
//?true
console.log(jsonstringify(false)?===?JSON.stringify(false));
//?true
console.log(jsonstringify(NaN)?===?JSON.stringify(NaN));
//?true
console.log(jsonstringify(Infinity)?===?JSON.stringify(Infinity));
//?true
let?str?=?"前端胖頭魚";
console.log(jsonstringify(str)?===?JSON.stringify(str));
//?true
let?reg?=?new?RegExp("\w");
console.log(jsonstringify(reg)?===?JSON.stringify(reg));
//?true
let?date?=?new?Date();
console.log(jsonstringify(date)?===?JSON.stringify(date));
//?true
let?sym?=?Symbol('前端胖頭魚');
console.log(jsonstringify(sym)?===?JSON.stringify(sym));
//?true
let?array?=?[1,?2,?3];
console.log(jsonstringify(array)?===?JSON.stringify(array));
//?true
let?obj?=?{
??name:?'前端胖頭魚',
??age:?18,
??attr:?['coding',?123],
??date:?new?Date(),
??uni:?Symbol(2),
??sayHi:?function?()?{
????console.log("hello?world")
??},
??info:?{
????age:?16,
????intro:?{
??????money:?undefined,
??????job:?null
????}
??},
??pakingObj:?{
????boolean:?new?Boolean(false),
????string:?new?String('前端胖頭魚'),
????number:?new?Number(1),
??}
}
console.log(jsonstringify(obj)?===?JSON.stringify(obj))?
//?true
console.log((jsonstringify(obj)))
//?{"name":"前端胖頭魚","age":18,"attr":["coding",123],"date":"2021-10-06T14:59:58.306Z","info":{"age":16,"intro":{"job":null}},"pakingObj":{"boolean":false,"string":"前端胖頭魚","number":1}}
console.log(JSON.stringify(obj))
//?{"name":"前端胖頭魚","age":18,"attr":["coding",123],"date":"2021-10-06T14:59:58.306Z","info":{"age":16,"intro":{"job":null}},"pakingObj":{"boolean":false,"string":"前端胖頭魚","number":1}}

//?3.?測(cè)試可遍歷對(duì)象
let?enumerableObj?=?{}

Object.defineProperties(enumerableObj,?{
??name:?{
????value:?'前端胖頭魚',
????enumerable:?true
??},
??sex:?{
????value:?'boy',
????enumerable:?false
??},
})

console.log(jsonstringify(enumerableObj))
//?{"name":"前端胖頭魚"}

//?4.?測(cè)試循環(huán)引用和Bigint

let?obj1?=?{?a:?'aa'?}
let?obj2?=?{?name:?'前端胖頭魚',?a:?obj1,?b:?obj1?}
obj2.obj?=?obj2

console.log(jsonstringify(obj2))
//?TypeError:?Converting?circular?structure?to?JSON
console.log(jsonStringify(BigInt(1)))
//?TypeError:?Do?not?know?how?to?serialize?a?BigInt

通過上面測(cè)試可以看出,jsonstringify基本和JSON.stringify表現(xiàn)一致,(也有可能測(cè)試用例不夠全面,歡迎提出一起學(xué)習(xí))

結(jié)尾

?

因?yàn)橐粋€(gè)BUG,重學(xué)了JSON.stringify,了解到原來它還有這么多平時(shí)沒有注意到特性,前端娛樂圈水太深了,愿大家都被溫柔以待,少些bug,多些關(guān)懷。晚安

?

Reference

[1]

Permalink to 參數(shù): https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify#parameters

[2]

Permalink to 異常: https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify#%E5%BC%82%E5%B8%B8


瀏覽 54
點(diǎn)贊
評(píng)論
收藏
分享

手機(jī)掃一掃分享

分享
舉報(bào)
評(píng)論
圖片
表情
推薦
點(diǎn)贊
評(píng)論
收藏
分享

手機(jī)掃一掃分享

分享
舉報(bào)

感谢您访问我们的网站,您可能还对以下资源感兴趣:

国产秋霞理论久久久电影-婷婷色九月综合激情丁香-欧美在线观看乱妇视频-精品国avA久久久久久久-国产乱码精品一区二区三区亚洲人-欧美熟妇一区二区三区蜜桃视频 中文无码一区二区三区| 91大神免费观看| 日本无码专区| 精品国产黄色| 91三级在线观看| 天天干天天操天天爽| 天天日天天干天天爽| 亚洲AV在线看| 免费操逼网站| 免费看一区二区三区A片| 在线观看你懂得| jk在线观看| 亚洲性爱在线视频| www.97av| 91色| 97人妻一区二区精品免费视频| 91大神免费在线观看| 麻豆乱伦| 大香蕉在线电影| 三级成人无码| 国产福利一区二区| 美日韩免费视频| 国产精品久久久久久最猛| 久久久久久久国产| 特级西西444www高清| 免费在线观看内射| 中文字幕成人网站中文字幕| 久久人人网| 日本免费高清视频在线观看一区| 在线视频中文字幕| 日批视频网站| 91国产爽黄在线| 免费的毛片| 国产无遮挡| 国内精品一区二区三区| 爱爱午夜福利| 天堂网av2025| 天天舔天天射| 91视频在线观看免费大全| 国产精品欧美激情| 欧美性爱动态| www.色在线观看| 成人精东影业JDAV3密友| 亚洲一区无码| 17.3c一起起草| 欧美日韩国产一区二区三区| 强辱丰满人妻HD中文字幕| www.激情五月天| 18禁黄色免费网站| 亚洲av毛片| 一区二区入口| 男女操逼视频网站| 99久久影院| 嫩小槡BBBB槡BBBB槡免费-百度 | 成人免费A片| 免费看操逼| 亚洲操逼网站| 安徽扫搡BBBB揉BBBB| 久久麻豆| 久久精品视频在线| 豆花视频成人| 乱伦三级| 久草免费在线视频| 欧美国产综合| 欧美手机在线视频| 国产成人av在线播放| www.超碰在线| 中文字幕日韩人妻在线| 加勒比在线| 综合五月| 日韩免费网站| 91人妻精| 亚洲无码AV电影| 囯产精品久久久久久久久久| 成年人黄色网址| 影音先锋男人资源站| 国产美女自拍视频| 国产www在线观看| 91超碰在线免费观看| 亚洲AV无码成人精品区欧洲| 欧美成人一级A片| 国产亚洲精品久久久久动| 潮喷av| 激情五月天影院| 亚洲无码99| 在线色片| 日韩在线不卡视频| 国产精品v| 777久久| 无码一二三区| 六月色婷婷| 亚洲无码电影在线| 操逼视频免费观看| 欧美色图视频网站| 在线观看AV无码| 黄色一级爱爱| 小黄片在线免费观看| 大BBBw大BBBW另类| 水蜜桃一区二区三区| 欧美成人国产| 日韩欧美小电影| 亚洲国产欧美日韩在线| 男人天堂大香蕉| 高清成人无码| а天堂中文在线资源| 无码操逼视频| 国产精品秘麻豆免费版现看视频 | 欧美一级婬片AAAA毛片| 大香蕉999| 亚洲精品乱码| 热久久免费视频| 亚洲无码网站| 亚洲免费在线婷婷| 影音先锋AV资源网站| 五月天AV网站| 99热青青| 欧美内射在线| 国产一級A片免费看| 黄网站在线播放| 亚洲一区二区在线视频| 91免费| 暗呦网一区二区三区| 蜜桃av秘无码一区二区三区| 婷婷综合| 午夜无码在线观看视频| 91丨人妻丨国产| 二区三区在线观看| 中文字幕一本道| 欧性猛交ⅩXXX乱大交| 成人午夜在线视频| 日韩AV在线免费| 艹逼视频网站| 亚洲精品一区二区三区| 1插菊花综合网| 天天日很很日| 蜜桃传媒在线| 日本国产黄色| 一本无码中文字幕| 天天日天天拍| 色婷婷中文字幕| 亚洲黄色影院| 99无码国产成人精品| 久久黑人| 婷婷精品国产a久久综合| 无码一区二区黑人猛烈视频网站| 影音先锋男人网| 熟妇槡BBBB槡BBBB图| 久久久久精| www.天天操| 日韩A片在线观看| 一级黄色录像片| 国产美女一级特黄大片| 国产男女无套免费| 伊人免费成人视频| 麻豆精品一区| 黄色成人网站免费在线观看| 五月丁香综合网| 92久久| 大香蕉看片| 蜜桃传媒一区| 九色PORNY9l原创自拍| 乱伦三区| 黄片视频在线观看| 国产欧美视频在线| 夜夜躁狠狠躁| 狠狠ri| 欧美日韩无码视频| 国产精品久久久精品cos| 92丨九色丨偷拍老熟女| 免费无码视频在线观看| 欧美九九| 国产三级高清无码| 538在线观看| 午夜久久视频| 色婷婷一区二区三区久久午夜| 少妇bbw搡bbbb搡bbbb| 欧美日韩免费在线观看| 国产成人视频| 国产女人精品视频| 蜜桃性视频| 色欲熟妇| 亚洲视频高清无码| 丁香成人五月天| 亚洲国产精品视频| 婷婷开心色四房播播免费| 亚洲av综合在线| 亚洲男女啪啪视频| 成人视频你懂的| 成人性爱免费视频| 日韩操b| 一区二区三区精品| 亚洲视频综合网| yw尤物在线| 成年人黄色视频| 一级电影视频去去去| 久草国产精品| 国精产品一区一区三区| a视频在线观看| www、久久| 一级片免费观看视频| 久久婷婷在线| 毛片18| 熟女一区二区| 外国成人视频| 黄色性爱网址| 五月天三级片| 激情av在线| 久久久久久久久久久高清毛片一级| 国精产品一区一区三区四区| 高清免费在线中文Av| 东京热A片| 无码一区二区在线观看| 木下凛凛子AV888AV在线观看 | 色综合国产| 99综合在线| 亚洲综合社区在线| 国产日B| 91热久久| 操碰视频| 精品伊人大香蕉| 黄色动漫在线免费观看| 亚洲AV成人精品一区二区三区| 成人在线视频观看| 伊人二区| 大香蕉在线看| 日韩精品网| 欧美色视频网| 日本免费色视频| 苍井空一区二区三区| 91无码人妻传媒tv| 一级a黄片| 黄色电影天堂网| 在线看黄色片| 日韩性爱一区二区| 国产欧美日韩在线播放| 第一福利成人AV导航| 久久三级| 日韩无码2024| 一级中国毛片| 91精品久久久久久久| 久久午夜鲁丝| 欧美伊人久久| 制服丝袜乱伦| 一级无码A片| 婷婷欧美日韩| 日韩极品视频| 青青成人| 欧美日韩免费在线播放电影在线播放电影在线播放电影免费 | 18国产免费视频| 国产乱子伦一区二区三区视频| 午夜福利视频网| 日韩激情| 青草视频在线观看免费| 亚洲视频在线视频| 日韩成人免费| 久久yy| 人人操人人摸人人看| 九九大香蕉| 七区九区一区在线| 欧美A片在线播放| 男人的天堂在线视频| 亚洲三级无码在线观看| 五月天婷婷导航| 午夜aaa| 欧美午夜精品久久久久免费视| 91毛片在线观看| 日韩视频免费观看| 国产嫩草影院| 欧美Aⅴ| 久久久精品| 日本无码视频在线| www.99精品| 小H片在线观看| 91人妻人人爽人人澡| 成人伊人大香蕉| 欧美亚洲综合在线观看| 日韩成人黄色| 最近中文字幕免费MV第一季歌词十 | 精品人妻一区二区免费蜜桃视频| 午夜福利电影无码| 一级黄色免费看| 午夜激情在线观看| 9999re| 成人a片在线观看| 亚洲性爱工厂| 日韩情色| 中文字幕成人网| 嫩BBB搡BBBB搡BBBB| 亚洲天堂精品视频| 欧美色综合| 荫蒂添到高潮免费视频| 亚洲免费播放| 夜夜骑免费视频| 9l农村站街老熟女| 亚洲不卡| 日韩精品丰满无码一级A片∴| 五月综合久久| 苍井空精毛片精品久久久| 成人av中文字幕| 亚洲欧美美国产| 一级免费黄色视频| 大香蕉伊在线观看| 免费在线a视频| 高潮无码视频| 夏目あきら被续侵犯7天| 一本色道久久综合无码人妻软件| 中文字幕乱伦| 色老板网址| 无码一二三区| 日韩无码2024| 色图欧美色图| 亚洲一级二级片| 3d动漫精品H区XXXXX区| 青娱乐三级在线免| 精品亚洲一区二区三区四区五区 | 欧美午夜无码| 伊人色女操穴综合网| 亚洲中文字幕色| 亚洲视频第一页| 久久青娱乐| 日本一级黄色电影| 日本三级片无码| 特级西西人体444.444人体聚色| 色色视频免费看| 欧美黄片一区| 午夜精品18码视频国产17c| 大香蕉尹人在线观看| 日逼黄片| 无码电影免费观看| 视频一区中文字幕| www.91madou| 97超碰在线免费观看| 久久综合大香蕉| 日韩在线不卡视频| 男人午夜网站| 日韩成人一区| 精品日韩AV| 国产在线导航| 日韩AV手机在线观看| 操逼网站在线观看| 高清无码操逼视频| 日本操逼电影| 亚洲天堂女人| AV在线免费观看网站| 精品国产AV色一区二区深夜久久| 国产精品无码成人AV在线播放| 一区在线看| 操逼在线播放| 男女草逼视频| 国产精品黄色视频| 亚洲无码成人AV| 欧美动态视频| 国产在线视频第一页| 艹逼视频网站| 麻豆熟妇乱妇熟色A片在线看 | 国产精彩视频| 蜜桃无码视频小说网站| 人人澡人人爱| 大蕉伊人网| 免费看一级一级人妻片| 先锋影音AV资源站| 激情操逼| 337P粉嫩大胆噜噜噜55569| 亚洲另类视频| 日韩国产| 中文字幕在线观看完整av| 国产69精品久久久久久| 天天干天天撸影视| 中文字幕在线网| 人人爱人人爽人人操| 微拍福利一区| 黑人粗大无码| 中文字幕日韩人妻在线| 欧美高清一区二区| www.麻豆网91成人久久久| 夜色88V精品国产亚洲| 成人在线无码| 日韩一级免费电影| 翔田千里无码在线观看| 午夜成人视频在线观看| 强开小嫩苞毛片一二三区| 国产ww| 不卡的AV| 亚洲中文字幕AV| 国产九九热视频| 欧美激情伊人久久五月天| 中文字幕在线免费播放| 热久久综合网站| 欧美超碰在线| 欧美熟妇另类久久久久久不卡| 三级网址在线观看| 国产又爽又黄A片| 91探花足浴店按摩店| 裸体美女视频欧美18| 91麻豆精品91久久久久同性| 猛男大粗猛爽H男人味| 自慰在线观看网站| 亚洲人妻AV| 亚洲三级毛片| 亚洲色逼图片| 亚洲欧洲成人在线| 亚洲永久天堂| 国产无遮挡又黄又爽又色学生软件 | 欧美日韩性爰视频| 免费超碰在线| 精品秘一区性综合三区| 超碰免费在线观看| 毛片在线免费| 亚洲人成免费网站| 国产精品视频久久久| 西欧超碰在线| 欧美A∨| 欧美精品在线观看视频| 日韩毛片在线视频x| 91狠狠综合久久久久久| 99久久国产热无码精品免费| 午夜3D动漫AV| 成人无码交配视频国产网站| 中文字幕北条麻妃| 中国女人操逼视频| 色婷婷国产精品综合在线观看| 五月天激情网址| 特级西西WWW444人体聚色| 亚洲天堂成人在线| 黄网国产手机在线观看| 亚洲av免费看| 亚洲一区高清无码| 91麻豆精品成人一区二区| 日韩欧美手机在线| av天堂电影网| 免费一级电影| 午夜69成人做爱视频网站| jizz免费视频| 欧美一级网| 伊人伊人网| 少妇爆射| 黄片免费看视频| av亚洲波多野结衣白嫩水多波 | 亚州一区| 国精产品九九国精产品| 欧美亚韩一区二区三区| 国产美女一级真毛片酒店| 亚洲国产区| 大肉大捧一进一出两腿| 偷拍精品视频| 亚洲影院第一页在线观看| 久久逼逼| 成人精品视频在线| 无码中文综合成熟精品AV电影| 韩国无码精品| 日韩在线播放视频| 久久黄片视频| av黄色| 另类老妇奶BBBBwBB| 浮力影院av| 成人国产精品秘在线看| 伊人福利导航| 五月天福利影院| 亚洲无码中文人妻| 色色五月天婷婷| 日韩欧美在线中文字幕| 98无码人妻精品一区二区三区| 蜜臀一区二区三区| 中文字幕aV在线| 五月丁香色色网| 九九色综合| 久久韩国| 99国产免费视频| 五月丁香六月久久| 91在线无码精品秘入口动作| AA丁香综合激情| 欧美性爱在线网站| 五月丁香在线观看| 亚欧免费视频| 亚洲A∨无码无在线观看| 国产一区二区免费看| 国产又粗又长的视频| aⅴ在线| 人人操人人干人人妻| 亚洲欧美成人在线| 91亚洲精品乱码久久久久久蜜桃 | 黄色直播在线观看| 精品无码一区二区三区在线| 亚洲人在线观看| 久久亚洲成人| 激情五月婷婷丁香| 国产精品一区二区三区不卡| 国产激情欧洲在线观看一区二区三区 | 亚洲视频精品| 99色亚洲| 国产无码高清| 色色国产| 国产内射网站| 欧美草比视频| 亚州毛多色色精品| 重庆美女揉BBBB搡BBBB| 天天操天天射天天日| 国产熟女自拍| 91麻豆福利在线观看| 狠狠狠狠操| 3d动漫精品H区XXXXX区| 亚洲色涩| 插菊花综合网亚洲| 高清一区二区三区| 尹人成人| 性爱黄色视频| 久草电影网站| 女神思瑞精品一区二区三区| 日韩一级片视频| 一区成人| 人人夜夜人人| 免费AV资源在线观看| 操老女人视频| 最新中文字幕在线视频| 亚洲人成小说| 男女黄色免费网站| 亚洲AV无码一区二区三区少妇| 无码在线免费观看视频| 91亚洲高清| 国内精品内射| aⅴ免费观看| 亚洲综合一二三区| 六月色婷婷| 欧美日本在线观看| 免费无码一级A片大黄在线观看| 色色色五月婷婷| 国产人国产视频成人免费观看…| 日韩A片在线观看| 黄色成人网站在线播放| 色天堂在线观看视频| 久久国产2025| 日韩性爱一区二区| 大香蕉福利导航| 七十路の高齢熟妇无码| 手机看片1024国产| 欧美日韩日逼视频| 国产高清精品在线| 丝袜人妻被操视频| 三级片久久久| 日韩午夜AV| 97中文字幕在线| 国产99久久| 天天日天天爱| 天天影视综合网免费观看电视剧国产 | 国产做受精品网站在线观看| 亚洲播播| 激情综合婷婷| 国产一二区| 草草浮力院| 91无码人妻东京热精品一区| 亚洲免费在线看| A片免费在线观看| 久久久久成人片免费观看蜜芽| 日韩中文一区| 狠狠干网站| 久久久久久大香蕉| 色色网站视频| 精品无码一区二区人妻久久蜜桃 | 日本人妻中文字幕| 国产三级电影在线观看| 成人看片| 一本无码中文字幕| 国产视频成人| 五月丁香激情四射| 五月天婷婷国产| 国产一区二区三区18| 亚洲欧洲免费视频| 东京热在线免费观看| 日韩大片在线观看| 伊人五月天| 丁香五月激情啪啪| 超碰在线日韩| 国产免费一区二区三区网站免费| 高潮视频在线观看| 污网站免费在线观看| caopro| 久久精品成人导航| 精品国产天线2024| 免费涩涩无遮挡18国产| 草逼网视频| 日本黄色精品| 99草自拍| 成人自拍视频| 超碰AV在线| 超碰操逼| 国产欧美综合一区二区三区| 大香蕉国产精品视频| 天干夜天干天天天爽视频| 黄色电影视频在线| 亚洲精品黄色电影| 91精品国产综合久久久蜜臀粉嫩| 日色色色| 丝袜制服中文字幕无码专区| 国产操| 免费在线观看A片| 大香蕉日逼| 一级在线| 手机毛片| 黄色国产免费| 日本精品人妻| 成人无码国产| 欧美成人电影在线观看| 亚洲欧美日韩中文字幕在线观看| 欧洲AV片| 欧美成人午夜影院| 69视频在线免费观看| 北条麻妃在线播放一区| 国产一级美女操逼视频免费播放| 欧美国产精品| 大香蕉操逼| 爱爱无码| 国产在线观看国产精品产拍| 日逼A片| 久久黑人| 国产免费自拍视频| 杨门女将婬乱史1—6| 久久久久久综合| 一级a一级a爰片免费| 日韩少妇无码视频| 中文无码在线观看中文字幕av中文 | 欧美黄色免费观看| 欧美成人午夜福利| 中文字幕+乱码+中文字幕电视剧| 亚洲在线一区| 青娱乐91视频| 麻豆激情视频| 久操青青| 亚洲无码人妻视频| 3D动漫精品一区二区在线播放免费 | 九色视频在线观看| a在线观看| 在线无码播放| 欧美操逼图| 青春草视频在线观看| 欧美一级日韩一级| 91青青| 青青草手机在线视频| 无码视频免费在线观看| 91成人18| 91蜜桃视频| 无码人妻一区二区三区精品不付款 | 亚洲无码精品一区二区三区| 中文字幕亚洲无码视频| 综合激情网站| 欧美午夜伦理| 亚洲日韩三级片| 国内久久婷婷| av在线免费观看网址| 亚洲Aⅴ| 最新中文字幕AV| 精品秘一区性综合三区| 99热精品2| 人妻国产| 日韩精品无码一区二区三区| 99爱爱视频| 熟女熟妇人妻一区二区三区| 色人天堂| 少妇无码在线| 久久偷看各类wc女厕嘘嘘偷窃| 12——13女人毛片毛片| 天天日,天天干,天天操| 69成人视频| 无码黄漫| 亚洲精品无码a片| 久草视频首页| 微拍福利一区| ThePorn日本无码| 麻豆免费成人视频| 北条麻妃无码视频在线观看| 色444| 成人在线一区二区| 蜜臀色欲AV无码人妻| 激情乱伦视频| 91视频在线看| 天美果冻麻豆国产一区| 中字一区人妻水多多| 99久久黄色| 日韩中文久久| av一二三区| 精品中文字幕视频| 中文字幕乱码中文乱码图片| 麻豆一区在线| 亚洲伊人成人| 熟女人妻ThePorn| 女生操逼网站| AV无码在线免费观看| 欧美一级性爱视频| 翔田千里一区二区三区| 最新无码视频| 久久er热| 久久久久久久国产| 详情:绿帽夫妻多人运动开淫啪-91n| 五月天毛片| 天天天天色| 国产精品免费人成网站酒店 | 色婷婷AV在线观看| 久久视频99| www黄色com| 波多野结衣无码在线视频| 日韩欧美第一页| 欧美丰满人妻| 内射无码专区久久亚洲| 久久麻豆| 成人无码免费毛片A片| 日本50路熟女| 国产精品一级二级三级| 久久精品无码一区二区无码性色| 欧美一级特黄真人做受| 人妻在线免费视频| 日本久热| 东京热在线视频观看| 91麻豆影院| 国产在线秘麻豆精品观看| 9999久久久久| 亚洲一区中文字幕成人在线| 天天撸免费视频| 四川性BBB搡BBB爽爽爽小说 | 国产精品视频免费在线观看| 九九九中文字幕| 黄色免费在线观看视频| 天a堂8在线www| 综合欧美国产视频二区| 91九色精品女同系列| 男人v天堂| 日韩无码av电影| 欧美mv日韩mv国产| 青青操网站| 中文字幕第一区| 日韩精品人妻无码| 91无码精品国产| 北条麻妃九九九在线视频| 淫荡五月天视频导航| 国产精品无码永久免费A片 | 日韩一级一级| 欧美婷婷| 黄色视频网站日本| 亚洲视频A| 欧美日韩国产免费观看成人片| 激情综合网站| 日本一本不卡| 久久精品成人电影| 特级丰满少妇一级AAAA爱毛片| 大香蕉免费中文| 黄色毛片在线播放| 91人人精品| 国产三级小视频| 成人无码区免费A片| 久久人妻熟女中文字幕av蜜芽| 一级黄色毛片| 亚洲国产视频在线观看| 免费无码国产在线| 日韩成人一级片| 午夜蜜桃人妻一区二区| 小黄片在线| 超碰青娱乐| 青娱乐亚洲精品视频| 欧美韩日一区二区| 国产精品一区二区在线观看| 乱子伦国产精品一区二区| 青青国产在线| 国产成人一级片| 91香蕉视频在线播放| 中文字幕高清AⅤ| 亚洲第一综合网| 免费A片在线看| 成人午夜小视频| 白嫩外女BBWBBWBBW| 日本无码一区二区三三| 农村一级婬片A片| 好好日视频| 日韩无码视频网站| 久99| 99精品久久| 熟女少妇网站| AV手机天堂| 神马午夜福利影院| 西西西444www无码视| 精品视频久久| 欧美久久电影| 一级AAAAA片裸体做受| sm在线观看| av日韩无码| 91精品在线播放| YOUjiZZ欧美大全| 福利一区在线观看| 天堂在线| 兔子先生和優奈玩游戲脫衣服,運氣報表優奈輸到脫精光 | 在线观看黄色av| 人人操超碰| 操逼网视频| av无码毛片| 午夜福利大香蕉| 日韩一级黄色| 亚洲天堂本一| 大香蕉伊人导航| 俺来俺去| 久久国产乱子伦精品免费女,网站| 神马Aⅴ| 丁香五月婷婷视频| 91综合视频在线播放| 家庭乱伦AV| 91探花国产综合在线精品| 亚洲无码字幕| 色婷婷中文| 福利导航在线| 亚洲日韩精品中文字幕| 青青青青操| 亚洲av小说| 俺来操| 熟妇槡BBBB槡BBBB| 成人片成人网久久蜜桃臀| 成人中文字幕网站| 激情五月激情综合网| www.91国产| 黄色一级网站| 久久成人久久| 男人视频网| 爱搞视频在线播放| 黄色视频在线观看网站| 思思热这里只有精品| 午夜h片| 97人妻在线视频| 免费毛片网站| 97精品人妻一区| 中文字幕乱码中文乱码91| 成人国产精品视频| 99在线免费视频| 黄页免费无码| 一级黄影| 大香蕉在线精品视频| 国产在线不卡年轻点的| 亚洲国产精品尤物yw在线观看| 婷婷综合久久| 青草青视频| 欧美午夜片| 丁香午夜| 开心深爱激情网| 乱伦天堂| 西西888WWW大胆视频| 玖玖爱在线精品视频| 口爆av| 国产亚洲欧美一区二区| 久久久国产精品在线| 91精品国产aⅴ一区二区| 成人黄色毛片| 中文亚洲精品字幕电影| 人人cao| 成人特级毛片全部免费播放 | 日韩A片在线观看| 亚洲人妻免费视频| 99久草| 免费亚洲无码| 亚洲中文字幕在线播放| 少妇成人网| 日本熟妇高潮BBwBBwBBw| 日韩电影免费在线观看中文字幕| 在线看片国产| 校园春色av| 在线看黄色片| 午夜亚洲AV永久无码精品蜜芽| 亚洲日韩黄色| 亚洲最大的成人网站| 黑巨茎大战欧美白妞| 亚洲AV无码乱码A片无码沈樵| 69pao| 波多野结衣黄色| 丁香五月激情啪啪| 中文字幕无码日韩| 尤物视频在线观看| 欧美久久婷婷| 91抽插| 午夜A片| 亚洲无码色婷婷| 一级中国毛片| 色老板免费视频| 日本一级婬片A片免费播放一| 欧美在线v| 在线看A片| 走光无码一区二区三区| 色xxx| 另类老妇奶性生BBwBB| 国产精品囯产三级囯产AV野外| 中文字幕日韩高清| 天天干天天干| 国产免费久久久| 亚洲精品一二三区| 日韩图片区小说视频区日| 国产精品无码免费| 九九热热| 少妇69p| 午夜在线观看视频| 国产青青草| 霸道总裁雷总各种姿势白浆爱情岛论坛 | 老司机在线免费视频| 91精品国产乱码香蕉黄瓜草莓| 男女AV| 操逼地址| 性饥渴熟妇乱子伦| 亚洲韩国中文字幕| 亚洲三级av|