我有一个数组20个对象BaseObjects调用ArrayBaseObjects。 用户调用一个对象,将其加载到用户界面中,并对属性进行更改。 像这样:JavaScript持续变化
var ArrayBaseObjects = new Array();
var CurrentObject = null;
function OpenRecord (TheIndex) {
CurrentObject = ArrayBaseObjects[TheIndex];
}
function RecordChanges() {
// bunch of statements that make changes to CurrenObject
CurrentObject.CrazyStuff = NewValue;
}
的问题是,当用户更改CurrentObject,它也改变了原始对象的在ArrayBaseObjects值。
我不明白为什么?当我写CurrentObject = ArrayBaseObjects[TheIndex];
为什么更改CurrentObject也会影响ArrayBaseObject中对象的值?
我正在寻找比较orignal对象和用户所做的更改的CurrentObject之间的值,但它们始终是相同的!我需要做出什么样的改变才能按照我的意图运作?
感谢您的解释。
[这似乎是对裁判相当不错的写了/在JavaScript值(http://stackoverflow.com/questions/ 518000/is-javascript-a-pass-by-reference-or-pass-by-value-language) –