最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解JavaScript中JSON.stringify方法

 更新時(shí)間:2023年09月06日 08:29:18   作者:編程三昧  
JSON 對(duì)象是我們經(jīng)常使用的一種數(shù)據(jù)存儲(chǔ)對(duì)象,它的適用范圍非常廣,JSON.stringify 方法可以幫我們把一個(gè)對(duì)象或數(shù)組轉(zhuǎn)換成一個(gè) JSON字符串,本文我們給大家詳細(xì)介紹一下JavaScript中JSON.stringify方法,需要的朋友可以參考下

JSON 對(duì)象是我們經(jīng)常使用的一種數(shù)據(jù)存儲(chǔ)對(duì)象,它的適用范圍非常廣。

而 JSON.stringify 方法的使用頻率也極高,合理使用 stringify 方法,我們可以實(shí)現(xiàn)很多簡(jiǎn)單需求:

  • 要實(shí)現(xiàn)對(duì)象的深拷貝時(shí),我們可以用 JSON 對(duì)象的 JSON.stringify 和 JSON.parse 來(lái)拷貝一個(gè)完全一樣的對(duì)象,而不會(huì)對(duì)原對(duì)象產(chǎn)生任何引用關(guān)系。
  • 在使用 localStorage 時(shí),也會(huì)用到它,因?yàn)?localStorage 只能存儲(chǔ)字符串格式的內(nèi)容,所以,我們?cè)诖嬷?,將?shù)值轉(zhuǎn)換成 JSON字符串。

JSON.stringify

JSON.stringify 方法可以幫我們把一個(gè)對(duì)象或數(shù)組轉(zhuǎn)換成一個(gè) JSON字符串。

我們通常只會(huì)用到它的第一個(gè)參數(shù),其實(shí)它還有另外兩個(gè)參數(shù),可以讓它實(shí)現(xiàn)一些非常好用的功能。

語(yǔ)法:

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

參數(shù):

  • value:將要被序列化的變量的值
  • replacer:替代器??梢允呛瘮?shù)或者是數(shù)組:
    • 如果是一個(gè)函數(shù),則value 每個(gè)屬性都要經(jīng)過(guò)這個(gè)函數(shù)的處理,該函數(shù)的返回值就是最后被序列化后的值。
    • 如果是一個(gè)數(shù)組,則要求該數(shù)組的元素是字符串,且這些元素會(huì)被當(dāng)做value 的鍵(key)進(jìn)行匹配,最后序列化的結(jié)果,是只包含該數(shù)組每個(gè)元素為key 的值。
  • space:指定輸出數(shù)值的代碼縮進(jìn),美化格式之用,可以是數(shù)字或者字符串:
    • 如果是數(shù)字(最大為10)的話,代表每行代碼的縮進(jìn)是多少個(gè)空格。
    • 如果是字符串的話,該字符串(最多前十個(gè)字符)將作顯示在每行代碼之前。

這時(shí)候,你應(yīng)該知道了。我們可以用 JSON.stringify 來(lái)做序列化時(shí)的過(guò)濾,相當(dāng)于我們可以自定義JSON.stringify 的解析邏輯。

使用函數(shù)過(guò)濾并序列化對(duì)象

function replacer(key, value) {
    if (typeof value === "string") {
        return undefined;
    }
    return value;
}
var foo = {
    foundation: "Mozilla",
    model: "box",
    week: 45,
    transport: "car",
    month: 7
};
var jsonString = JSON.stringify(foo, replacer); // {"week":45,"month":7}

使用數(shù)組過(guò)濾并序列化對(duì)象

const user = {
    name: "zollero",
    nick: "z",
    skills: ["JavaScript", "CSS", "HTML5"]
};
JSON.stringify(user, ["name", "skills"], 2); 
// "{//   "name": "zollero",//   "skills": [//     "JavaScript",//     "CSS",//     "HTML5"http://   ]// }"

還有一個(gè)有意思的東西,是對(duì)象的toJSON 屬性。

如果一個(gè)對(duì)象有toJSON 屬性,當(dāng)它被序列化的時(shí)候,不會(huì)對(duì)該對(duì)象進(jìn)行序列化,而是將它的toJSON 方法的返回值進(jìn)行序列化。

看下面的例子:

var obj = {
    foo: "foo",
    toJSON: function () {
        return "bar";
    }
};
JSON.stringify(obj); 
// '"bar"'JSON.stringify({x: obj}); // '{"x":"bar"}'

總結(jié)

stringify 方法的重點(diǎn)和難點(diǎn)在于第二和第三個(gè)參數(shù)的靈活使用上,需要多加練習(xí)。

到此這篇關(guān)于詳解JavaScript中JSON.stringify方法的文章就介紹到這了,更多相關(guān)JavaScript JSON.stringify方法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 基于JavaScript實(shí)現(xiàn)div層跟隨滾動(dòng)條滑動(dòng)

    基于JavaScript實(shí)現(xiàn)div層跟隨滾動(dòng)條滑動(dòng)

    項(xiàng)目需求是這樣的:在一個(gè)頁(yè)面放2個(gè)懸浮框,懸浮框隨頁(yè)面的上下滾動(dòng)有上下波動(dòng)的效果,最終固定在同一位置,下面通過(guò)本文給大家分享基于JavaScript實(shí)現(xiàn)div層跟隨滾動(dòng)條滑動(dòng)的相關(guān)資料,對(duì)js div跟隨滾動(dòng)條滑動(dòng)相關(guān)知識(shí)感興趣的朋友一起學(xué)習(xí)吧
    2016-01-01
  • JS中改變this指向的方法(call和apply、bind)

    JS中改變this指向的方法(call和apply、bind)

    this是javascript的一個(gè)關(guān)鍵字,隨著函數(shù)使用場(chǎng)合不同,this的值會(huì)發(fā)生變化。但是總有一個(gè)原則,那就是this指的是調(diào)用函數(shù)的那個(gè)對(duì)象,通過(guò)本文給大家介紹JS中改變this指向的方法(call和apply、bind),需要的朋友參考下
    2016-03-03
  • ionic中列表項(xiàng)增加和刪除的實(shí)現(xiàn)方法

    ionic中列表項(xiàng)增加和刪除的實(shí)現(xiàn)方法

    在項(xiàng)目中遇到表單似的頁(yè)面,需要進(jìn)行增加一行和減少一行的操作,基于ionic怎么實(shí)現(xiàn)呢?下面小編給大家分享ionic中列表項(xiàng)增加和刪除的實(shí)現(xiàn)方法,一起看看吧
    2017-01-01
  • 關(guān)于javascript解決閉包漏洞的一個(gè)問(wèn)題詳解

    關(guān)于javascript解決閉包漏洞的一個(gè)問(wèn)題詳解

    閉包在JavaScript高級(jí)程序設(shè)計(jì)(第3版)中是這樣描述:閉包是指有權(quán)訪問(wèn)另一個(gè)函數(shù)作用域中的變量的函數(shù),下面這篇文章主要給大家介紹了關(guān)于javascript解決閉包漏洞的一個(gè)問(wèn)題的相關(guān)資料,需要的朋友可以參考下
    2022-11-11
  • JavaScript基于DOM操作實(shí)現(xiàn)簡(jiǎn)單的數(shù)學(xué)運(yùn)算功能示例

    JavaScript基于DOM操作實(shí)現(xiàn)簡(jiǎn)單的數(shù)學(xué)運(yùn)算功能示例

    這篇文章主要介紹了JavaScript基于DOM操作實(shí)現(xiàn)簡(jiǎn)單的數(shù)學(xué)運(yùn)算功能,涉及javascript節(jié)點(diǎn)操作、元素遍歷及數(shù)學(xué)運(yùn)算相關(guān)操作技巧,需要的朋友可以參考下
    2017-01-01
  • javascript創(chuàng)建含數(shù)字字母的隨機(jī)字符串方法總結(jié)

    javascript創(chuàng)建含數(shù)字字母的隨機(jī)字符串方法總結(jié)

    如果想創(chuàng)建一個(gè)含有數(shù)字、字母(大小寫)或者符號(hào)的字符串,比如從[a-zA-Z0-9]集合中中創(chuàng)建一個(gè)隨機(jī)的字符串,長(zhǎng)度為5.有沒(méi)有什么比較好的代碼呢?本文提供了幾種方法,包括自動(dòng)改變字符集合。一起來(lái)學(xué)習(xí)下。
    2016-08-08
  • 瀑布流布局代碼一例

    瀑布流布局代碼一例

    提起瀑布流布局想必大家并不陌生吧,其實(shí)呢?原理也就那樣,下面有個(gè)小例子,與大家分享
    2014-04-04
  • JS ES6多行字符串與連接字符串的表示方法

    JS ES6多行字符串與連接字符串的表示方法

    這篇文章主要介紹了JS ES6多行字符串與連接字符串的表示方法,結(jié)合具體實(shí)例形式對(duì)比分析了ES6中的多行字符串與連接字符串的表示方法與相關(guān)操作技巧,需要的朋友可以參考下
    2017-04-04
  • 微信小程序?qū)崿F(xiàn)九宮格效果

    微信小程序?qū)崿F(xiàn)九宮格效果

    這篇文章主要為大家詳細(xì)介紹了微信小程序?qū)崿F(xiàn)九宮格效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • JavaScript?canvas?實(shí)現(xiàn)用代碼畫(huà)畫(huà)

    JavaScript?canvas?實(shí)現(xiàn)用代碼畫(huà)畫(huà)

    這篇文章主要為大家介紹了JavaScript?canvas?實(shí)現(xiàn)用代碼畫(huà)畫(huà)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11

最新評(píng)論

福州市| 昌乐县| 台中市| 荣昌县| 蒙自县| 馆陶县| 保山市| 长宁区| 柳江县| 台北市| 泗洪县| 衡山县| 双牌县| 广汉市| 宁南县| 色达县| 锦屏县| 万州区| 宜川县| 平利县| 德保县| 郓城县| 团风县| 江安县| 瑞昌市| 浦城县| 蚌埠市| 寿阳县| 册亨县| 龙海市| 德钦县| 会同县| 黔西| 得荣县| 桂平市| 尚志市| 石渠县| 若尔盖县| 嵊州市| 海口市| 渭源县|