我有一個數組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) –