Javascript对象是否自动更改?

Javascript对象是否自动更改?,javascript,object,javascript-objects,custom-object,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.log将由convertToMOSTEM创建的自定义对象记录到控制台,但在调试器语

我有以下代码:

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记录了对象的正确版本,但是我在debugger语句中得到的对象就像是自定义对象的干净版本,而没有
convertToMOSTEM
函数应用的额外修改。我不确定这是否很清楚,如果您有任何问题,请在评论中向我提问。

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

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

为了避免这种情况,请在拨打电话时记录您感兴趣的各个属性。例如,如果您有一个具有
id
name
email
属性的
person
对象,请不要执行以下操作:

console.log( person );
改为这样做:

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

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

我看不出这是怎么回事。你能不能建立一个最小的工作示例来重现这个问题?这很奇怪。隔离代码可以正常工作,但对于此文件中的其他代码,它会出错…很有趣,但即使这是真的,对象也必须随着时间而改变,即使是相反的方式,正如打开console.log箭头和在debugger语句中看到变量时所显示的不同+1因为知道这个很好,但它不能解决问题。