toJSON()方法詳解

admin發表於2018-07-28
此方法是Date物件的內建成員,語法結構如下:
[JavaScript] 純文字檢視 複製程式碼
objectname.toJSON()

此方法返回UTC時區的ISO格式日期字串(由字尾Z表示)。

瀏覽器支援:

(1).IE8+瀏覽器支援此方法。

(2).edge瀏覽器支援此方法。

(3).谷歌瀏覽器支援此方法。

(4).火狐瀏覽器支援此方法。

(5).opera瀏覽器支援此方法。

(6).safria瀏覽器支援此方法。

程式碼例項如下:

[JavaScript] 純文字檢視 複製程式碼
var date=new Date();
console.log(date.toJSON());

上面的程式碼實現了轉換效果,正如前面介紹,返回值是UTC時區的ISO格式字串。

從用法上看,好像和JSON沒多大關係,其實不然,從名字上看也不會如此單純。

此方法被JSON.stringify方法使用,如果被轉換的物件具有toJSON方法,那麼會首先呼叫toJSON方法。

前面說過此方法是Date物件內建,在預設情況下,其他物件並沒有此方法,不過我們可以為物件自定義此方法。

程式碼例項:

[JavaScript] 純文字檢視 複製程式碼執行程式碼
var obj={
  webName:"螞蟻部落",
  age:2
}
obj.toJSON=function(){
  return "softwhy.com"
}
console.log(JSON.stringify(obj));

上面的程式碼可以看出,當在使用JSON.stringify方法進行序列化操作的時候,會首先呼叫物件的toJSON方法。

[JavaScript] 純文字檢視 複製程式碼執行程式碼
var obj=new Object();
obj.webName="antzone";
obj.address="青島市南區";
obj.action="best";
 
obj.toJSON=function(){
  var replacement=new Object();
  for(var val in this){
    if(typeof (this[val])==='string'){
      replacement[val]=this[val].toUpperCase();
    }      
    else{
      replacement[val]=this[val]
    }       
  }
  return replacement;
};
var jsonText=JSON.stringify(obj);
console.log(jsonText);

上面的程式碼為obj物件自定義了一個toJSON方法,可以將物件字串屬性值的小寫字母轉變為大寫。

關於JSON.stringify方法可以參閱JSON.stringify()一章節。

相關文章