久久久久久久视色,久久电影免费精品,中文亚洲欧美乱码在线观看,在线免费播放AV片

<center id="vfaef"><input id="vfaef"><table id="vfaef"></table></input></center>

    <p id="vfaef"><kbd id="vfaef"></kbd></p>

    
    
    <pre id="vfaef"><u id="vfaef"></u></pre>

      <thead id="vfaef"><input id="vfaef"></input></thead>

    1. 站長資訊網
      最全最豐富的資訊網站

      鮮為人知的 JSON.stringify 用法

      JS 中有許多常見的函數,我們可能每天都在使用它們,但是卻不知道它們的一些額外功能。JSON.stringify 就是這樣的一個函數,今天就來看下它的特殊用法。

      鮮為人知的 JSON.stringify 用法

      基礎

      JSON.stringify 方法接收一個變量,并將它轉換成 JSON 表示形式。

      const boy = {    name: 'John',    age: 23  };  JSON.stringify(boy); // {"name":"John","age":23}

      JSON 就是純字符串,它本質上是 JS 的一個子集,所以并不是所有的 JS 對象都能轉換為 JSON:

      const boy = {    name: 'John',    age: 23,   hobbies: new Map([[0, 'coding'], [1, 'earn money']]) }  JSON.stringify(boy) // {"name":"John","age":23,"hobbies":{}}

      上面的例子中 Map 對象就會被忽略并轉換為普通對象。而如果屬性是函數的話則這個屬性就會被忽略,感興趣的同學可以試下。

      第二個參數

      JSON.stringify 可以接收第二個參數,可以稱為 replacer 替換器。

      你可以傳入一個字符串數組,這個數組中具有的屬性才會被轉換,就像一個白名單。

      const boy = {    name: 'John',    age: 23 }  JSON.stringify(boy, ['name']) // {"name":"John"}

      我們可以利用這個特性,只轉換需要轉換的屬性,過濾掉如很長的數組、錯誤對象等。

      這個 replacer 參數還可以接收一個函數。這個函數會遍歷整個對象,并將鍵和值傳入,讓你決定該如何替換它們。

      const boy = {    name: 'John',    age: 23,   hobbies: new Map([[0, 'coding'], [1, 'earn money']]) }  JSON.stringify(boy, (key, value) => {   if (value instanceof Map) {     return [...value.values()]   }   return value }) // {"name":"John","age":23,"hobbies":["coding","earn money"]}

      而如果你返回了 undefined (返回 null 不行),就將這個屬性移除了:

      JSON.stringify(boy, (key, value) => {   if (typeof value === 'string') {     return undefined   }   return value }) // {"age":23,"hobbies":{}}

      第三個參數

      第三個參數 space 控制了轉換后的 JSON 串的間距。

      如果參數是數字,則以該數字個數的空格進行縮進:

      JSON.stringify(boy, null, 2) // { //   "name": "John", //   "age": 23, //   "hobbies": {} // }

      而如果參數是字符串,則以該字符串進行縮進:

      JSON.stringify(boy, null, '--') // { //   --"name": "John", //   --"age": 23, //   --"hobbies": {} // }

      toJSON 方法

      如果我們要轉換的對象具有一個 toJSON 方法,那么就可以定制自己被序列化的過程。您可以從方法中返回一個新值,而不是序列化該對象,并且此值將被序列化,而不是原始對象。

      const boy = {    name: 'John',    age: 23,   hobbies: new Map([[0, 'coding'], [1, 'earn money']]),   toJSON() {     return {       name: `${this.name} (${this.age})`,       favorite: this.hobbies.get(0)     }   } }  JSON.stringify(boy) // {"name":"John (23)","favorite":"coding"}

      是不是很有趣?有時候仔細看一些文檔還是很有用的~

      參考文章

      • 原文地址:https://mp.weixin.qq.com/s/_e83_G7RjVt2eR_ro7blOA

      • MDN:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify

      本文來自 js教程 欄目,歡迎學習!

      贊(0)
      分享到: 更多 (0)
      網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號