设想
阅读此答案后,我意识到我可以从 JSON 文字开始创建对象。
所以我猜想我可以使用这个有用的 JSON 方法做相反的事情:
JSON.stringify(myObject)
.
所以我做了如下:
function MyObject(id, value, desc)
{
this.id = id;
this.value = value;
this.desc = desc;
this.toJSON = function()
{
return JSON.stringify(this);
}
}
但是当我运行这个东西(演示)Maximum call stack size exceeded
时,会发生错误。
谷歌搜索了一下后,我发现了两个解释这种行为的参考资料:
- MDN上的JSON.stringify()方法。
- JSON.org上的JSON in Javascript文章
如果我做对.toJSON
了,覆盖.stringify
. 因此,如果第一个调用第二个,则会生成一个循环。
问题
- (一般)为什么选择这种设计?
toJSON
是一种特殊关键字的保留? .toJSON
(具体)我解决了将名称更改为.display
. 没有那么优雅。还有其他解决方案吗?