您好,登錄后才能下訂單哦!
JavaScript對象序列化、toString()與valueOf()怎么用?這個(gè)問題可能是我們?nèi)粘W(xué)習(xí)或工作經(jīng)常見到的。希望通過這個(gè)問題能讓你收獲頗深。下面是小編給大家?guī)淼膮⒖純?nèi)容,讓我們一起來看看吧!
序列化
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" }" }"
當(dāng)對象的value為undefined和Object時(shí)會被忽略,為NaN和Infinity為null,對象實(shí)例如d,為key和value都加上雙引號
JSON.stringify()處理數(shù)組
let arr = [undefined, Object, Symbol(""), { e: 'nice' }] console.log(JSON.stringify(arr)) //輸出 "[null, null, null, { "e": "nice" }]"
自定義序列化
可以重寫toJSON()方法進(jìn)行自定義序列化
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" 調(diào)用了toString +obj; //輸出 "3" 調(diào)用了toString obj.valueOf = function(){ return this.x + this.y + 100; } "Result" + obj; //輸出 "Result103" 調(diào)用了toString
當(dāng)toString和valueOf都存在時(shí),在進(jìn)行操作時(shí),都會嘗試轉(zhuǎn)換成基本類型,先找valueOf,如果返回基本類型,這只調(diào)用valueOf,如果不是,比如是對象的話,就去找toString,如果也返回Object,就會報(bào)錯(cuò)
感謝各位的閱讀!看完上述內(nèi)容,你們對JavaScript對象序列化、toString()與valueOf()怎么用大概了解了嗎?希望文章內(nèi)容對大家有所幫助。如果想了解更多相關(guān)文章內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。