所以,我有兴趣发现JSON.stringify将一个RegExp简化为一个空的object-literal(fiddle):
JSON.stringify(/^[0-9]+$/) // "{}"
这种行为有望吗?我意识到RegExp是一个没有要序列化属性的对象.也就是说,日期也是对象;然而JSON.stringify()设法生成一个有意义的字符串:
JSON.stringify(new Date) // "2014-07-03T13:42:47.905Z"
我希望JSON通过使用RegExp.prototype.toString()给RegExp同样的考虑.
解决方法:
是的,因为在JSON中没有RegExp对象的规范表示.因此,它只是一个空对象.
编辑 – 现在是2018年;使用.toJSON()等建议解决方案的答案可能还不错,不过我会将方法添加到原型中
Object.defineProperty(RegExp.prototype, "toJSON", {
value: RegExp.prototype.toString
});
等等.这确保了函数名称不可枚举,这使得猴子补丁更加卫生.