var myFirstArray = [{letter: 'a'}, {letter: 'b'}, {letter: 'c'}];
我想做出myFirstArray的引用,所以我這樣做:
var mySecondArray = myFirstArray;
推,拼接,修改元素在myFirstArray中將顯示在mySecondArray中,但是如果我想將該數組重置爲其他值:
myFirstArray = [];
或
myFirstArray = someOtherData;
我的參考文獻丟失了。我明白這是爲什麼,但我希望mySecondArray
可以隨時指向任何myFirstArray
指向的地方。什麼是最好的方法來做到這一點?
我的解決方法包括:
// Just empty the array and push it:
while (myFirstArray.length) myFirstArray.pop();
for (var x in data) myFirstArray.push(x);
// Or put the array in an object:
var viewBag = {};
viewBag.myFirstArray = [...];
var mySecondArray = viewBag.myFirstArray;
我不喜歡這兩個選項:(
編輯:考慮另外一種情況:
function doSomethingToMyArray (theArray) {
// Say I get new data that will be formatted the way I want it to be
// Shouldn't I be allowed to do this?
var myNewData = [{ letter: 'd' }];
theArray = myNewData;
}
var myFirstArray = [{letter: 'a'}, {letter: 'b'}, {letter: 'c'}];
doSomethingToMyArray (myFirstArray);
// At this point, myFirstArray will still be a, b, c instead of d
'myFirstArray.length = 0;'會清除你的兩個數組,如果這是所有你需要做的。如果你想完全替換內容,那麼:'myFirstArray.length = 0; myFirstArray.push.appy(myFirstArray,someOtherData);'。這些都會影響'mySecondArray',只要你讓它引用'myFirstArray'就像你的問題所暗示的那樣。 – DRobinson 2015-02-06 17:28:23
Javascript沒有變量引用。它只有對象和數組的引用。 – Barmar 2015-02-06 17:29:13
Barmar,ok - 那麼你是說當Bar指向一個新的數組/對象時,沒有辦法將引用Foo保存到數組/對象Bar中? – 2015-02-06 17:41:58