オブジェクトにtoJSONメソッドを持つ場合の挙動
JavaScriptの JSON.stringify() メソッドは、オブジェクトをJSON形式の文字列に変換する際に、そのオブジェクトが toJSON メソッドを持っている場合に特別な挙動を示します。
具体的には、JSON.stringify() は次のように動作します:
1. オブジェクトが toJSON メソッドを持っている場合、このメソッドが呼び出されます。
2. toJSON メソッドが存在する場合、そのメソッドが返す値が、実際にJSON文字列に変換される値として使われます。
3. toJSON メソッドが存在しない場合、オブジェクト自体が文字列化されます。
例えば、次のようなオブジェクトがあるとします:
const obj = { data: 'Some data', toJSON: function() { return this.data.toUpperCase(); } };
この場合、obj を JSON.stringify() で文字列化すると、toJSON メソッドが obj で呼び出され、その結果として "SOME DATA" という文字列が返されます。
const jsonString = JSON.stringify(obj); console.log(jsonString); // 出力: "SOME DATA"
したがって、toJSON メソッドを持つことで、オブジェクトのJSON形式への変換をカスタマイズすることができます。