首頁 > web前端 > js教程 > 主體

JavaScript物件序列化、toString()與valueOf()的用法介紹

不言
發布: 2019-03-14 11:49:54
轉載
2647 人瀏覽過

這篇文章帶給大家的內容是關於JavaScript物件序列化、toString()與valueOf()的用法介紹,有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。

序列化

JSON.stringify()處理物件

let obj = {
            val: undefined,
            a: NaN,
            b: Infinity,
            c: new Date(),
            d: { e: 'nice' },
            y: Object
          }
console.log(JSON.stringify(obj)) 
//输出 "{ "a": null, "b": null, "c": "2019-03-13T12:01:44.295Z", "d": "{ "e": "nice" }" }"
登入後複製

當物件的value為undefined和Object時會被忽略,為NaN和Infinity為null,物件實例如d,為key和value都加上雙引號

JSON.stringify()處理數組

let arr = [undefined, Object, Symbol(""), { e: 'nice' }]
console.log(JSON.stringify(arr)) 
//输出 "[null, null, null, { "e": "nice" }]"
登入後複製

自訂序列化

可以重寫toJSON()方法進行自訂序列化

let obj = {
            x: 1,
            y: 2,
            re: {
                  re1: 1,
                  re2: 2,
                  toJSON: function(){
                      return this.re1 + this.re2;
                  }  
                }
          }
console.log(JSON.stringify(obj))
//输出 "{ "x":1, "y":2, "re":3 }"
登入後複製

物件的toSting()

let obj = { x:1, y:2 }
console.log(obj.toString()) //输出 "[object Object]" 

obj.toString = function(){
                    return this.x + this.y;
               }
"Result" + obj; //输出 "Result3" 调用了toString
+obj; //输出 "3" 调用了toString

obj.valueOf = function(){
                    return this.x + this.y + 100;
               }
"Result" + obj; //输出 "Result103" 调用了toString
登入後複製

當toString和valueOf都存在時,在進行操作時,都會嘗試轉換成基本類型,先找valueOf,如果傳回基本類型,這只呼叫valueOf,如果不是,例如是物件的話,就去找toString,如果也回傳Object,就會報錯

以上是JavaScript物件序列化、toString()與valueOf()的用法介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:segmentfault.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板