摘要:關于對象定義了全局對象。支持的瀏覽器有除了接受要序列化的對象外,還可以接受另外兩個參數。如果是數值,則表示每個級別縮進的空格數,最大,超過的值自動轉換成。字符串長度超過,結果中將只出現前個字符。會在結果字符串中插入換行符提高可讀性。
關于JSON 1. JSON 對象
es5 定義了全局對象 JSON。
支持的瀏覽器有 IE8+ 、Firefox 3.5+ 、Safari 4+、Chrome、Opera 10.5+
JSON.stringify() 除了接受要序列化的對象外,還可以接受另外兩個參數。
第一個參數是一個過濾器,可以是一個數組或函數,第二個參數是一個選項,表示是否在JSON字符串中保留縮進。
如:
var book = { title: "Professional JS", authors: ["abc", "def"], edition: 3, year: 2011 }
第一個參數是數組
var jsonText1 = JSON.stringify(book, ["title", "edition"]) console.log(jsonText1) // "{"title":"Professional JS","edition":3}"
第一個參數是函數
var jsonText2 = JSON.stringify(book, function (key, value) { switch (key) { case "authors": return value.join(","); case "year": return 2016; case "edition": return undefined; default: return value; } }) console.log(jsonText2) // "{"title":"Professional JS","authors":"abc,def","year":2016}"
第二個參數用于控制結果中的縮進和空白符。
如果是數值,則表示每個級別縮進的空格數,最大10,超過10 的值自動轉換成10。
如果是字符串,則用作縮進字符。字符串長度超過10,結果中將只出現前10個字符。
會在結果字符串中插入換行符提高可讀性。
如:
var jsonText3 = JSON.stringify(book, null, 6) console.log(jsonText3) // "{ // "title": "Professional JS", // "authors": [ // "abc", // "def" // ], // "edition": 3, // "year": 2011 // }" var jsonText4 = JSON.stringify(book, null, "--") console.log(jsonText4) // "{ // --"title": "Professional JS", // --"authors": [ // ----"abc", // ----"def" // --], // --"edition": 3, // --"year": 2011 // }"3. toJSON() 方法
可以給對象定義 toJSON() 方法,返回自身的 JSON 數據格式,此方法優先級最高
如:
var book = { title: "Professional JS", authors: ["abc", "def"], edition: 3, year: 2011, toJSON: function () { return { name: "wfc" } } } var jsonText = JSON.stringify(book, null, 1) console.log(jsonText) // "{ // "name": "wfc" // }" 注意: JSON.stringify() 處理的優先級為 toJSON() => 第二個參數 => 第三個參數。4. JSON.parse()
JSON.parse() 接受另一個參數,該參數是一個函數,將在每個健值對上采用,類似于 JSON.stringify() 的過濾函數。
如:
var book = { title: "Professional JS", authors: ["abc", "def"], edition: 3, year: 2011, releaseDate: new Date(2016,11,22) } var jsonText = JSON.stringify(book, null, 1) console.log(jsonText) // " // json.html:48 { // "title": "Professional JS", // "authors": [ // "abc", // "def" // ], // "edition": 3, // "year": 2011, // "releaseDate": "2016-12-21T16:00:00.000Z" // }" var copyBook = JSON.parse(jsonText, function (key, value) { if (key === "releaseDate") { console.log(value) // "2016-12-21T16:00:00.000Z" return new Date(value) } else { return value } })
JSON部分結束
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/81202.html
摘要:如果重設構造函數的原型對象,那么,會切斷新的原型對象和任何之前已經存在的構造函數實例之間的聯系,它們引用的仍然是最初的原型。說明返回的對象與構造函數或者與構造函數的原型屬性沒有關系。 說明: 此摘要筆記系列是我最近看《JavaScript高級程序設計(第3版)》隨手所記。里面分條列舉了一些我認為重要的、需要記下的、對我有幫助的點,是按照我看的順序來的。摘要筆記本身沒有系統性,沒有全面性...
摘要:說明此摘要筆記系列是我最近看高級程序設計第版隨手所記。摘要筆記本身沒有系統性,沒有全面性可言,寫在這里供有一定基礎的前端開發者參考交流。對每一項運行給定函數,返回該函數會返回的項組成的數組。是的反操作是的反操作第一部分結束。 說明: 此摘要筆記系列是我最近看《JavaScript高級程序設計(第3版)》隨手所記。 里面分條列舉了一些我認為重要的、需要記下的、對我有幫助的點,是按照我看...
摘要:思路是,使用原型鏈對原型屬性和方法進行繼承,借用構造函數實現對實例屬性的繼承。注意使用寄生式繼承來為對象添加函數,會由于不能做到函數復用而降低效率,這一點與構造函數模式類似。無論什么情況下都會調用兩次超類型的構造函數。 說明: 此摘要筆記系列是我最近看《JavaScript高級程序設計(第3版)》隨手所記。里面分條列舉了一些我認為重要的、需要記下的、對我有幫助的點,是按照我看的順序來的...
摘要:函數表達式和閉包函數聲明的一個重要特征是函數聲明提升如遞歸遞歸函數是在一個函數通過名字調用自身的情況下構成的。注意中已經是塊級作用域了,所以這些東西感覺實際用途沒有那么大,但是對理解閉包對作用域鏈中的屬性的引用,這一點還是有作用的。 函數表達式和閉包 1. 函數聲明的一個重要特征是函數聲明提升 如: sayHi() function sayHi () { console.log(h...
摘要:說明此摘要筆記系列是我最近看高級程序設計第版隨手所記。其中,描述符對象的屬性必須是設置其中一個或多個值,可以修改對應的特性值。如支持的瀏覽器,可以取得指定屬性的描述符。 說明: 此摘要筆記系列是我最近看《JavaScript高級程序設計(第3版)》隨手所記。里面分條列舉了一些我認為重要的、需要記下的、對我有幫助的點,是按照我看的順序來的。摘要筆記本身沒有系統性,沒有全面性可言,寫在這里...
閱讀 535·2019-08-30 15:55
閱讀 944·2019-08-29 15:35
閱讀 1199·2019-08-29 13:48
閱讀 1910·2019-08-26 13:29
閱讀 2933·2019-08-23 18:26
閱讀 1237·2019-08-23 18:20
閱讀 2834·2019-08-23 16:43
閱讀 2710·2019-08-23 15:58