成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

JS對象序列化、對象的toString()與對象的valueOf()

iamyoung001 / 2005人閱讀

摘要:序列化處理對象輸出當(dāng)對象的為和時會被忽略,為和為對象實例如,為和都加上雙引號處理數(shù)組輸出當(dāng)成員為時為對象也是為和都加上雙引號自定義序列化可以重寫方法進(jìn)行自定義序列化輸出對象的和輸出輸出調(diào)用了輸出調(diào)用了輸出調(diào)用了當(dāng)和都存在時,在進(jìn)行操作時

序列化 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)對象的valueundefinedObject時會被忽略,為NaN和Infinity為null,對象實例如d,為keyvalue都加上雙引號

JSON.stringify()處理數(shù)組
let arr = [undefined, Object, Symbol(""), { e: "nice" }]
console.log(JSON.stringify(arr)) 
//輸出 "[null, null, null, { "e": "nice" }]"

當(dāng)成員為undefined、ObjectSymbol時為null,對象也是為keyvalue都加上雙引號

自定義序列化

可以重寫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()和valueOf()
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)toStringvalueOf都存在時,在進(jìn)行操作時,都會嘗試轉(zhuǎn)換成基本類型,先找valueOf,如果返回基本類型,這只調(diào)用valueOf,如果不是,比如是對象的話,就去找toString,如果也返回Object,就會報錯

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/109187.html

相關(guān)文章

  • 通過一張簡單圖,讓你徹底地、永久地搞懂JS==運算

    摘要:一有和無在圖中,值的六種類型用藍(lán)底色的矩形表示。想一下在語言中,根本沒有布爾類型,通常用來表示邏輯真假的正是整數(shù)和。根據(jù)圖,需要將布爾類型轉(zhuǎn)為數(shù)字類型,而轉(zhuǎn)為數(shù)字的結(jié)果是,所以表達(dá)式變?yōu)閮蓚€操作數(shù)變成了對象類型數(shù)字類型。 大家知道,==是JavaScript中比較復(fù)雜的一個運算符。它的運算規(guī)則奇怪,容易讓人犯錯,從而成為JavaScript中最糟糕的特性之一。 在仔細(xì)閱讀了ECMASc...

    testbird 評論0 收藏0
  • js數(shù)據(jù)類型轉(zhuǎn)化

    數(shù)據(jù)類型轉(zhuǎn)化表 首先上數(shù)據(jù)類型轉(zhuǎn)化表,便于遇到問題直接查看 值 字符串 數(shù)字 布爾值 對象 undefined null undefined null NaN false false throws TypeError throws TypeError true false true false 1 0 new Boolean(true) new Boolean(f...

    dmlllll 評論0 收藏0
  • 每天10個前端知識點:雜技

    摘要:個人博客已上線,歡迎前去訪問評論無媛無故的個人博客以下內(nèi)容若有問題煩請即時告知我予以修改,以免誤導(dǎo)更多人。把一個邏輯值轉(zhuǎn)換為字符串,并返回結(jié)果。注冊后,可直接調(diào)用的接口,并獲取的返回值。 個人博客已上線,歡迎前去訪問評論!無媛無故 - wangchloe的個人博客 以下內(nèi)容若有問題煩請即時告知我予以修改,以免誤導(dǎo)更多人。 toString() && valueOf() JSON ...

    dongfangyiyu 評論0 收藏0
  • 每天10個前端知識點:雜技

    摘要:個人博客已上線,歡迎前去訪問評論無媛無故的個人博客以下內(nèi)容若有問題煩請即時告知我予以修改,以免誤導(dǎo)更多人。把一個邏輯值轉(zhuǎn)換為字符串,并返回結(jié)果。注冊后,可直接調(diào)用的接口,并獲取的返回值。 個人博客已上線,歡迎前去訪問評論!無媛無故 - wangchloe的個人博客 以下內(nèi)容若有問題煩請即時告知我予以修改,以免誤導(dǎo)更多人。 toString() && valueOf() JSON ...

    marser 評論0 收藏0

發(fā)表評論

0條評論

iamyoung001

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<