Angular2.JSON.stringify

Angular2.JSON.stringify,json,angular,date,stringify,Json,Angular,Date,Stringify,为什么Angular2会覆盖JSON.stringify 我已经重写了我自己的Date.toJSON,但在字符串化对象时没有调用它 在下面的例子中,它工作正常,但在Angular应用程序中不工作 自定义日期Fomat: ISO日期格式: Date.prototype.toJSON=函数{ var day=date.getDate; var month=date.getMonth+1; var year=date.getFullYear; var s=年份+-+ 月份>9?:0+月份+-+ 天>

为什么Angular2会覆盖JSON.stringify

我已经重写了我自己的Date.toJSON,但在字符串化对象时没有调用它

在下面的例子中,它工作正常,但在Angular应用程序中不工作

自定义日期Fomat: ISO日期格式: Date.prototype.toJSON=函数{ var day=date.getDate; var month=date.getMonth+1; var year=date.getFullYear; var s=年份+-+ 月份>9?:0+月份+-+ 天>9?:0+天+T00:00:00.000Z; 返回s; } var日期=新日期; document.getElementByIddate1.innerHTML=JSON.stringify{date}; document.getElementByIddate2.innerHTML=date.toISOString;
stringify将只复制对象“自己”的属性,即该对象的“顶级”属性。如果您有一个使用原型继承的复杂javascript对象,它将不会复制来自原型链的属性

基本上,一旦处理了使用函数构造函数创建的特定类型的对象,就不能相信JSON.stringify会做您所期望的事情。JSON规范允许这样的自定义对象提供自己的.toJson方法,JSON.stringify将使用该方法。但是,并非所有的库供应商或浏览器供应商都愿意提供此功能


幸运的是,解决方法非常简单。您可以提供/附加您自己的.toJson方法,或者在收到对象后立即将对象的属性“复制”到pojo纯旧javascript对象中。一旦您处理pojo,JSON.stringify就会非常有效。但是要小心,对象的所有子属性都被复制为本机数据类型或POJO。

您在angular2中做了什么?请分享,我看不出你在哪里调用Date.toJSON函数。我知道你在哪里使用了JSON.stringify和date.toISOString.JSON.stringify必须调用date.toJSON我是对的!?