Javascript对象自动更改?

时间:2013-06-15 02:33:53

标签: javascript object javascript-objects custom-object

我有以下代码:

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

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

1 个答案:

答案 0 :(得分:1)

一种可能性是你被console.log()的一点行为所误导,这种行为并不明显。

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

要避免这种情况,请在拨打电话时记录您感兴趣的各个媒体资源。例如,如果您的person对象包含idnameemail属性,请不要执行此操作:

console.log( person );

请改为:

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

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