控制台日志记录对象显示2个不同的值

时间:2016-05-10 05:57:31

标签: angularjs date object

What the...

这太疯狂了,不是吗?!如果我直接访问离开的人,我会得到2016-05-18的正确值。

console.log(searchFactory.search.searchparams.journeys[0].departuredate); // 2016-05-18 
console.log(searchFactory.search.searchparams.journeys[0] //stored in the object as 2010-05-10 

但是,如果我将console.log()整个对象与附加的屏幕截图相同,则会重置为今天的日期。这怎么可能呢?最终价值被分配给我的工厂,最终到2016-05-10 - 今天。在某个地方,日期变得更新到今天的日期,对于我的生活,我不明白如何。

$scope.$watch('date', function(newDate) {
    searchFactory.search.searchparams.journeys[0].departuredate = moment(newDate.startDate).format("YYYY-MM-DD");
    searchFactory.search.searchparams.journeys[0].returndate = moment(newDate.endDate).format("YYYY-MM-DD");
    console.log(searchFactory.search.searchparams.journeys[0]);    
});

我疯了,试图解决这个问题。

基本上我正在观看日期范围项目,这一切都很好。然后将newDate分配给我的工厂进行存储和以后的使用。如您所见,我只是记录对象以查看值。你可以在屏幕截图中看到它是如何带有两个不同的值......我相信这是不可能的,直到现在。

任何指针都将不胜感激。

1 个答案:

答案 0 :(得分:2)

这是webkit中的一个known bug,4年后还没有打到chrome。

  

截至今天,将对象(数组)转储到控制台将导致对象的属性存在   读取控制台对象扩展(即懒惰)。这意味着同时转储同一个对象   使用控制台调试很难调试。

     

此更改开始生成对象/数组的缩写预览   记录并将此信息传递到前端。这只发生在前端   已经打开,它只适用于console.log(),而不适用于实时控制台交互。

here

You can use obj.toString()同时按照您的意图进行记录。