JavaScript對(duì)象序列化、toString()與valueOf()怎么用?這個(gè)問題可能是我們?nèi)粘W(xué)習(xí)或工作經(jīng)常見到的。希望通過(guò)這個(gè)問題能讓你收獲頗深。下面是小編給大家?guī)?lái)的參考內(nèi)容,讓我們一起來(lái)看看吧!
成都創(chuàng)新互聯(lián)公司,為您提供網(wǎng)站建設(shè)、成都網(wǎng)站制作、網(wǎng)站營(yíng)銷推廣、網(wǎng)站開發(fā)設(shè)計(jì),對(duì)服務(wù)發(fā)電機(jī)回收等多個(gè)行業(yè)擁有豐富的網(wǎng)站建設(shè)及推廣經(jīng)驗(yàn)。成都創(chuàng)新互聯(lián)公司網(wǎng)站建設(shè)公司成立于2013年,提供專業(yè)網(wǎng)站制作報(bào)價(jià)服務(wù),我們深知市場(chǎng)的競(jìng)爭(zhēng)激烈,認(rèn)真對(duì)待每位客戶,為客戶提供賞心悅目的作品。 與客戶共同發(fā)展進(jìn)步,是我們永遠(yuǎn)的責(zé)任!
序列化
JSON.stringify()處理對(duì)象
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)對(duì)象的value為undefined和Object時(shí)會(huì)被忽略,為NaN和Infinity為null,對(duì)象實(shí)例如d,為key和value都加上雙引號(hào)
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 }"
對(duì)象的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í),都會(huì)嘗試轉(zhuǎn)換成基本類型,先找valueOf,如果返回基本類型,這只調(diào)用valueOf,如果不是,比如是對(duì)象的話,就去找toString,如果也返回Object,就會(huì)報(bào)錯(cuò)
感謝各位的閱讀!看完上述內(nèi)容,你們對(duì)JavaScript對(duì)象序列化、toString()與valueOf()怎么用大概了解了嗎?希望文章內(nèi)容對(duì)大家有所幫助。如果想了解更多相關(guān)文章內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。