在Chrome控制台中展开JavaScript对象时,会显示不同的属性值
我正在用Chrome开发工具进行JavaScript调试,发现了以下奇怪之处 当对象展开时,在Chrome控制台中展开JavaScript对象时,会显示不同的属性值,javascript,google-chrome,datetime,Javascript,Google Chrome,Datetime,我正在用Chrome开发工具进行JavaScript调试,发现了以下奇怪之处 当对象展开时,date如何可能具有不同的值 打印对象时,应小心使用chrome控制台。请注意,chrome在打印/扩展对象时会进行计算,也会异步进行计算(这意味着其他代码可能会同时执行并更改对象)。始终尝试打印到字符串以进行调试,而不是打印对象本身 我举了一个非常简单的例子来说明这个问题 <div id="foo"></div> console.log($('#foo')); //expect
date
如何可能具有不同的值
打印对象时,应小心使用chrome控制台。请注意,chrome在打印/扩展对象时会进行计算,也会异步进行计算(这意味着其他代码可能会同时执行并更改对象)。始终尝试打印到字符串以进行调试,而不是打印对象本身 我举了一个非常简单的例子来说明这个问题
<div id="foo"></div>
console.log($('#foo')); //expected output [div#foo...]
$('#foo').attr('id','hello');
console.log($('foo'))//预期产出[div#foo…]
$('foo').attr('id','hello');
chrome控制台中的实际输出为:
在这样的对象上定义不可枚举属性时,会发生这种情况
Object.defineProperty(res, 'url', { value: '/api/url' });
Object.defineProperty(res, 'url', { value: '/api/url', enumerable: true });
要解决这个问题,您必须使它像这样可枚举
Object.defineProperty(res, 'url', { value: '/api/url' });
Object.defineProperty(res, 'url', { value: '/api/url', enumerable: true });
你能演示一下这个对象是如何创建的吗?当我创建一个带有日期的对象时,它会显示相同的值。