我有以下代码:
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
函数应用的额外修改。我不确定这是否非常清楚,如果您有任何疑问,请在评论中向我提问。
答案 0 :(得分:1)
一种可能性是你被console.log()
的一点行为所误导,这种行为并不明显。
当您记录对象时,控制台不会保存该对象的所有属性以便稍后显示。唯一的实时显示是console.log()
显示的单行打印输出。如果单击三角形以展开使用console.log()
显示的对象,则展开的显示将在您单击三角形时显示该对象的属性,而不是原始时的属性console.log()
致电。
要避免这种情况,请在拨打电话时记录您感兴趣的各个媒体资源。例如,如果您的person
对象包含id
,name
和email
属性,请不要执行此操作:
console.log( person );
请改为:
console.log( person.id, person.name, person.email );
这样,如果这三个属性是字符串值,您将在进行console.log()
调用时记录其实际值。