
前些天在《淺談 JSON.stringify 方法》說了他的正確使用姿勢,今天來說下 toJSON 方法吧。
其實我覺得這貨跟 toString 一個道理,他是給 stringify 方法字符串化的時候調用的。
看下 MDN 官方文檔吧《toJSON behavior》。
非常簡單,但是要注意的是他和 stringify 方法第二個參數稍微有點不同。
因為 stringify 第二個參數是回調函數時,只是對當前 key 對應的值進行修改。
而 toJSON 則是對當前對象進行修改。
例如:
var obj = {
key: 'foo'
};
var ret = JSON.stringify(obj, function (k, v) {
return k === "key" ? v.toUpperCase() : v;
});
console.log(ret);
var obj = {
key: 'foo',
toJSON: function () {
return 'bar';
}
};
var ret = JSON.stringify(obj);
console.log(ret);
區別非常明顯,toJSON 的返回值直接代替了當前對象,而 stringify 的回調函數則僅僅是修改了當前值。
當然他們有各自的用處,所以看需求選擇使用就好。
好了,今天就簡單分享下這些吧。
