前些天在《淺談 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 的回調函數則僅僅是修改了當前值。
當然他們有各自的用處,所以看需求選擇使用就好。
好了,今天就簡單分享下這些吧。