0

我有以下代码:

var doneFile=convertToMOSTEM(curFile.file,curFile.color,curFile.importance);
console.log('doneFile:');
console.log(doneFile);
debugger;
filesOS.add(doneFile);
debugger;

convertToMOSTEM返回一个自定义对象。将console.log创建的自定义对象记录convertToMOSTEM到控制台,但在调试器语句中直接在 console.log 之后将其记录为不同的对象。我不想详细说明 的内容convertToMOSTEM,而是询问可能发生这种情况的情况。但是,我可以说,它convertToMOSTEM使用自定义构造函数创建了一个自定义对象,然后它修改了该自定义对象的一些属性,然后返回修改后的对象。console.log 记录了对象的正确版本,但我在调试器语句中得到的对象就像自定义对象的干净版本,没有convertToMOSTEM函数应用额外的修改。我不确定这是否很清楚,如果您有任何问题,请在评论中向我提问。

4

1 回答 1

1

一种可能是你被一些console.log()不明显的行为误导了。

当您记录一个对象时,控制台不会保存该对象的所有属性以供以后显示。唯一的实时显示是显示的单行打印输出console.log()。如果您单击三角形以展开使用 显示的对象,则展开的显示会显示您单击三角形时console.log()该对象的属性,而不是原始调用时的属性。console.log()

为避免这种情况,请在拨打电话时记录您感兴趣的各个属性。例如,如果您有一个personid具有、name和属性的对象email,请不要这样做:

console.log( person );

改为这样做:

console.log( person.id, person.name, person.email );

这样,如果这三个属性是字符串值,您将在console.log()调用时记录它们的实际值。

于 2013-06-15T04:29:13.993 回答