這篇文章帶給大家的內容是關於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中文網其他相關文章!